如何避免节点中的多个文本值。我已经编写了逻辑,我的代码工作正常,我按照预期的输出得到结果但是对于预期的输出有没有不同的方法。
输入:
<?xml version="1.0" encoding="UTF-8"?>
<Customer>
<name>
<Id>1AZlzxIAD 001AZlzxIyyy</Id>
<phone>1</phone>
</name>
<name>
<Id>1AZlzxIAD 001AZlzxIyyy 001AZl</Id>
<phone>8</phone>
</name>
<name>
<Id>0zyIAD</Id>
<phone>3</phone>
</name>
<name>
<Id>IAT</Id>
<phone>5</phone>
</name>
<name>
<Id>zXIAT</Id>
<phone>9</phone>
</name>
代码:
<xsl:template match="/">
<Customer>
<xsl:for-each select="Customer/name">
<xsl:if test="not(contains(Id, ' '))">
<xsl:copy-of select="."/>
</xsl:if>
</xsl:for-each>
</Customer>
</xsl:template>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
预期产出:
<?xml version="1.0" encoding="UTF-8"?>
<Customer>
<name>
<Id>0zyIAD</Id>
<phone>3</phone>
</name>
<name>
<Id>IAT</Id>
<phone>5</phone>
</name>
<name>
<Id>zXIAT</Id>
<phone>9</phone>
</name>
</Customer>
答案 0 :(得分:0)
您可以将当前<xsl:template match="/">...</xsl:template>
替换为:
<xsl:template match="name[contains(Id, ' ')]"/>