如果以下兄弟中存在特定标签,则匹配标签

发布于 2025-01-07 06:11:43 字数 1294 浏览 0 评论 0原文

我有一个 xml,其中我的标签 仅需要转换,前提是其后面至少有一个标签 作为同级标签。

<Doc>
    <T>T1</T>
    <A>A1</A>
    <T>T2</T>
    <C>C2</C>
    <T>T3</T>
    <X>X1</X>
</Doc>

应该变成: T1A1T2C2X1

我目前有:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="xml"/>
    <xsl:template match="/">
        <xsl:element name="Doc">
            <xsl:apply-templates select="*" />
        </xsl:element>
    </xsl:template>

    <xsl:template match="A">
        <xsl:value-of select="."/>
    </xsl:template>

    <xsl:template match="C">
        <xsl:value-of select="."/>
    </xsl:template>

    <xsl:template match="X">
        <xsl:value-of select="."/>
    </xsl:template>

    <xsl:template match="T[following-sibling::* ??? exists C">
        <xsl:value-of select="."/>
    </xsl:template>

    <xsl:template match="*">
    </xsl:template>
</xsl:stylesheet>

不知道如何实现 match="T[following-sibling::* ??? contains C"

I have an xml where my tag <T> is only to be transformed, if there is at least one tag <C> following behind it as sibling.

<Doc>
    <T>T1</T>
    <A>A1</A>
    <T>T2</T>
    <C>C2</C>
    <T>T3</T>
    <X>X1</X>
</Doc>

should become: T1A1T2C2X1

I currently have:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="xml"/>
    <xsl:template match="/">
        <xsl:element name="Doc">
            <xsl:apply-templates select="*" />
        </xsl:element>
    </xsl:template>

    <xsl:template match="A">
        <xsl:value-of select="."/>
    </xsl:template>

    <xsl:template match="C">
        <xsl:value-of select="."/>
    </xsl:template>

    <xsl:template match="X">
        <xsl:value-of select="."/>
    </xsl:template>

    <xsl:template match="T[following-sibling::* ??? exists C">
        <xsl:value-of select="."/>
    </xsl:template>

    <xsl:template match="*">
    </xsl:template>
</xsl:stylesheet>

Not sure how to realize the match="T[following-sibling::* ??? exists C"

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

任谁 2025-01-14 06:11:43

用途:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text"/>

    <xsl:template match="/*">
        <xsl:apply-templates select="*"/>
    </xsl:template>

    <xsl:template match="T[preceding-sibling::*[1][self::C]]"/>

    <xsl:template match="*">
        <xsl:value-of select="."/>
    </xsl:template>
</xsl:stylesheet>

输出:

T1A1T2C2X1

Use:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text"/>

    <xsl:template match="/*">
        <xsl:apply-templates select="*"/>
    </xsl:template>

    <xsl:template match="T[preceding-sibling::*[1][self::C]]"/>

    <xsl:template match="*">
        <xsl:value-of select="."/>
    </xsl:template>
</xsl:stylesheet>

Output:

T1A1T2C2X1
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文