我想根据第一个孩子的值设置父级的属性。 我正在使用XSLT 1.0。
<div>
<div>
<span>A</span>
<span>text...text</span>
</div>
<div>
<span>1</span>
<span>text...text</span>
</div>
</div>
应转换为:
<div>
<div data-type="alphanumeric">
<span>text...text</span>
</div>
<div data-type="numeric">
<span>text...text</span>
</div>
</div>
有人可以帮助我如何做到这一点吗?
谢谢!
答案 0 :(得分:0)
尝试类似:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="div[span]">
<xsl:copy>
<xsl:attribute name="data-type">
<xsl:choose>
<xsl:when test="translate(span[1], '0123456789', '')">alphanumeric</xsl:when>
<xsl:otherwise>numeric</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
请注意,仅当值仅包含数字时,才会选择numeric
; IOW,<span>0.1</span>
的值将被标记为alphanumeric
。
或者,您可以使用:
<xsl:when test="number(span[1])=number(span[1])">numeric</xsl:when>
<xsl:otherwise>alphanumeric</xsl:otherwise>
会将数字标记为numeric
。