我有一个xml:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ValidationErrors>
<FieldName name="contact-detail-name">
<Errors>
<error>Please enter NAME</error>
</Errors>
</FieldName>
<FieldName name="contact-detail-street-address">
<Errors>
<error>Please enter STREET ADDRESS</error>
</Errors>
</FieldName>
<FieldName name="contact-detail-postcode">
<Errors>
<error>Number of digits exceeded. Please try again with 4 digits.</error>
</Errors>
</FieldName>
<FieldName name="contact-detail-email-address">
<Errors>
<error>Please enter EMAIL</error>
</Errors>
</FieldName>
<FieldName name="contact-detail-phone-number">
<Errors>
<error>Please enter PHONE NUMBER</error>
</Errors>
</FieldName>
</ValidationErrors>
我写了一个xsl来替换取决于name属性的节点值:
<xsl:template name="initialReplace" match="ValidationErrors/FieldName[@name='contact-detail-name']/Errors" >
<error>Write a name</error>
</xsl:template>
并调用上述模板。但是我只得到旧的价值。
答案 0 :(得分:1)
您不需要命名模板,只需编写两个模板
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="ValidationErrors/FieldName[@name='contact-detail-name']/Errors/error" >
<error>Write a name</error>
</xsl:template>
除非XML具有您未显示的名称空间,否则应该这样做。