我遇到的情况,我需要转换:使用XSLT来更改元素属性,缩短名字
<Hand id="left">
<FingerOne>Thumb</FingerOne>
<FingerTwo>Pointer</FingerTwo>
<FingerThree>Middle</FingerThree>
</Hand>
要:
<Hand id="left" F1="Thumb" F2="Pointer" F3="Middle" />
我一直在使用这一块的XSLT转换嵌套的实体标记到属性中,这很好。虽然将元素移动到属性中,但我不确定如何将名称“FingerOne”更改为1,将“FingerTwo”更改为2等。
<xsl:for-each select="*">
<xsl:attribute name="{name()}">
<xsl:value-of select="text()"/>
</xsl:attribute>
</xsl:for-each>
我找到答案https://stackoverflow.com/a/8274527/857994它显示了如何使用基本上是地图做转换。尽管我似乎无法让它在我的文档中工作。
请注意,我正在尝试使用JAXP在Java的XSLT功能中进行构建。它似乎并不支持许多XSLT2.0功能,所以如果你能坚持使用XSLT1.0,我会非常感激。