如何使用XSLT实现基于字符串模式删除不需要的数据的XML ?



请求XML:

<SchoolName>
  <name>ABC International, Wisconsin</name>
  <rank>10</rank>
</SchoolName>
<SchoolName>
  <name>XYZ Primary, Las Vegas</name>
  <rank>4</rank>
</SchoolName>
<SchoolName>
  <name>Ryan Academy, Wisconsin</name>
  <rank>6</rank>
</SchoolName>
<SchoolName>
  <name>Advanced Elementary, Houston</name>
  <rank>15</rank>
</SchoolName>
目标XML:

必须只考虑名称中包含"Wisconsin"的学校,但名称中不能包含"Academy"。所以它会返回如下内容:

<SchoolName>
  <name>ABC International, Wisconsin</name>
  <rank>1</rank>
</SchoolName>

实现这一点的最好方法是什么?实现这一目标的XSLT文件应该是什么样的?

您可以使用xslt:if过滤器

实现您的目标
<xsl:for-each select="SchoolNames/SchoolName">
    <xsl:if test="name[contains(text(),'Wisconsin')] and not(name[contains(text(),'Academy')])">
      <!-- do something -->
    </xsl:if>
</xsl:for-each>

或select predicate:

<xsl:for-each select="SchoolNames/SchoolName[name[contains(text(),'Wisconsin')] and not(name[contains(text(),'Academy')])]">
    <!-- do something -->
</xsl:for-each>

相关内容

  • 没有找到相关文章

最新更新