我的 XML 看起来像这样:
<Articles>
<Article>
<Position>Body</Position>
<Categorie>Food</Categorie>
<ProductName>Apple</ProductName>
</Article>
<Article>
<Position>Body</Position>
<Categorie>Food</Categorie>
<ProductName>Pineapple</ProductName>
</Article>
<Article>
<Position>Body</Position>
<Categorie>Drinks</Categorie>
<ProductName>Water</ProductName>
</Article>
<Article>
<Position>Body</Position>
<Categorie>Drinks</Categorie>
<ProductName>CocaCola</ProductName>
</Article>
</Articles>
转换后它应该是这样的:
<Articles>
<Article>
<Position>Title</Position>
<Titlename>Food</Titlename>
</Article>
<Article>
<Position>Body</Position>
<Categorie>Food</Categorie>
<ProductName>Apple</ProductName>
</Article>
<Article>
<Position>Body</Position>
<Categorie>Food</Categorie>
<ProductName>Pineapple</ProductName>
</Article>
<Article>
<Position>Title</Position>
<Titlename>Drinks</Titlename>
</Article>
<Article>
<Position>Body</Position>
<Categorie>Drinks</Categorie>
<ProductName>Water</ProductName>
</Article>
<Article>
<Position>Body</Position>
<Categorie>Drinks</Categorie>
<ProductName>CocaCola</ProductName>
</Article>
</Articles>
类别数可以是可变的,所以我需要一个 XLST 样式表来检查<Categorie>
标签的值是否是第一个。
如果是,则应在文章上方复制此部分:
`<Article>
<Position>Title</Position>
<Titlename>Food</Titlename>
</Article>`
这是我的尝试:
重要的是要知道我仅限于 v1.0
<xsl:for-each select="Article">
<xsl:if test="Position/Categorie = First()">
<Article>
<Position><xsl:value-of Select ="Title"></Position>
<Titlename><xsl:value-of Select ="Categorie"></Titlename>
</Article>
</xsl:if>
<Article>
<Position><xsl:value-of Select ="Position"></Position>
<Categorie><xsl:value-of Select ="Categorie"></Categorie>
<ProductName><xsl:value-of Select ="ProductName"></ProductName>
</Article>
</xsl:for-each>
我想你想做:
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="*"/>
<xsl:template match="/Articles">
<xsl:copy>
<xsl:for-each select="Article">
<xsl:if test="not(Categorie=preceding-sibling::Article/Categorie)">
<Article>
<Position>Title</Position>
<Titlename>
<xsl:value-of select="Categorie"/>
</Titlename>
</Article>
</xsl:if>
<xsl:copy-of select="."/>
</xsl:for-each>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句