我希望使用XML转换来清理我的数据。
我的请求XML:
<Schools>
<SchoolName>
<name>ABC International, Wisconsin</name>
<rank>1</rank>
</SchoolName>
<SchoolName>
<name>XYZ Primary, Las Vegas</name>
<rank>1</rank>
</SchoolName>
<SchoolName>
<name>Ryan Academy, Wisconsin</name>
<rank>1</rank>
</SchoolName>
<SchoolName>
<name>Advanced Elementary, Houston</name>
<rank>1</rank>
</SchoolName>
</Schools>
XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:for-each select="Schools/SchoolName[name[contains(text(),'Wisconsin')]and not(name[contains(text(),'Academy')])]">
<xsl:value-of select="name" />
<xsl:value-of select="rank" />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
输出我得到: ABC国际,威斯康星州1
我希望输出:
<Schools>
<SchoolName>
<name>ABC International, Wisconsin</name>
<rank>1</rank>
</SchoolName>
</Schools>
我应该在XSLT中修复什么来适应这种变化?
答案 0 :(得分:0)
好吧,如果你想输出XML然后确保复制你感兴趣的节点或创建新的节点,复制应该足以满足你的用例:
<xsl:template match="Schools">
<xsl:copy>
<xsl:copy-of select="SchoolName[name[contains(.,'Wisconsin')]and not(name[contains(.,'Academy')])]"/>
</xsl:copy>
</xsl:template>
但请注意,浏览器中的客户端XSLT不是XML的良好环境 - &gt; XML转换因此在XML编辑器或IDE中运行该代码以查看XML结果,浏览器可能只显示文本节点。