XSLT 根据子节点的值在第一个节点之前插入节点

迈鲁

我的 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>
michael.hor257k

我想你想做:

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

xslt中第一个子节点之前和最后一个子节点之后的字符

来自分类Dev

如何使用XSLT删除根节点并使第一个子节点成为新的根节点?

来自分类Dev

在XSLT中,如何根据另一个子节点的值显示一个子节点的值

来自分类Dev

XSLT根据另一个节点的值更改值节点

来自分类Dev

如何使用XSLT根据另一个节点的内容获取XML节点的值?

来自分类Dev

XSLT根据另一个节点的值更改值节点

来自分类Dev

XSLT:选择第一个节点并替换其文本

来自分类Dev

XSLT。根据另一个节点的存在抑制一个节点

来自分类Dev

XSLT。根据另一个节点的存在抑制一个节点

来自分类Dev

子节点问题的 XSLT 值

来自分类Dev

xslt-如何指定一个节点值?

来自分类Dev

从另一个节点 xslt 调用值

来自分类Dev

XSLT根据另一个节点的属性删除节点

来自分类Dev

使用xslt将一个XML节点的元素移动到子节点

来自分类Dev

XSLT 从同一个父节点中的子节点生成表

来自分类Dev

Xpath 必需:根据第一个节点的子节点获取兄弟节点的子节点

来自分类Dev

获取包含来自另一个节点集XSLT1.0的值的节点集

来自分类Dev

XSLT:如何通过另一个节点查找节点的值

来自分类Dev

XSLT,当父节点属性与另一个节点的属性值匹配时,对子节点进行转换

来自分类Dev

使用 xslt 根据子值获取 xml 节点

来自分类Dev

XSLT节点值比较

来自分类Dev

如何使用XSLT根据子节点的条件复制父节点?

来自分类Dev

如何返回用 XSLT 中另一个子节点的数据修改的子节点?

来自分类Dev

根据节点值使用xslt从xml中删除节点

来自分类Dev

XSLT-根据其他节点修改XML节点的值

来自分类Dev

使用XSLT XPATH根据内部节点值获取外部节点

来自分类Dev

使用xslt将节点从XML插入另一个XML文件

来自分类Dev

确定唯一的子节点计数XSLT

来自分类Dev

确定唯一的子节点计数XSLT

Related 相关文章

  1. 1

    xslt中第一个子节点之前和最后一个子节点之后的字符

  2. 2

    如何使用XSLT删除根节点并使第一个子节点成为新的根节点?

  3. 3

    在XSLT中,如何根据另一个子节点的值显示一个子节点的值

  4. 4

    XSLT根据另一个节点的值更改值节点

  5. 5

    如何使用XSLT根据另一个节点的内容获取XML节点的值?

  6. 6

    XSLT根据另一个节点的值更改值节点

  7. 7

    XSLT:选择第一个节点并替换其文本

  8. 8

    XSLT。根据另一个节点的存在抑制一个节点

  9. 9

    XSLT。根据另一个节点的存在抑制一个节点

  10. 10

    子节点问题的 XSLT 值

  11. 11

    xslt-如何指定一个节点值?

  12. 12

    从另一个节点 xslt 调用值

  13. 13

    XSLT根据另一个节点的属性删除节点

  14. 14

    使用xslt将一个XML节点的元素移动到子节点

  15. 15

    XSLT 从同一个父节点中的子节点生成表

  16. 16

    Xpath 必需:根据第一个节点的子节点获取兄弟节点的子节点

  17. 17

    获取包含来自另一个节点集XSLT1.0的值的节点集

  18. 18

    XSLT:如何通过另一个节点查找节点的值

  19. 19

    XSLT,当父节点属性与另一个节点的属性值匹配时,对子节点进行转换

  20. 20

    使用 xslt 根据子值获取 xml 节点

  21. 21

    XSLT节点值比较

  22. 22

    如何使用XSLT根据子节点的条件复制父节点?

  23. 23

    如何返回用 XSLT 中另一个子节点的数据修改的子节点?

  24. 24

    根据节点值使用xslt从xml中删除节点

  25. 25

    XSLT-根据其他节点修改XML节点的值

  26. 26

    使用XSLT XPATH根据内部节点值获取外部节点

  27. 27

    使用xslt将节点从XML插入另一个XML文件

  28. 28

    确定唯一的子节点计数XSLT

  29. 29

    确定唯一的子节点计数XSLT

热门标签

归档