【问题标题】:Combining XML tags vis XSLT like in a 1:n relation像 1:n 关系一样组合 XML 标记和 XSLT
【发布时间】:2018-01-30 14:07:24
【问题描述】:

也许有人可以帮忙。我想在 XSLT 脚本中将 XML 标记与他的兄弟姐妹结合起来。我有以下 XML 文件。我想将标签与所有出现的标签结合起来。这里有一个例子 XML 文件:

<root>
    <row>
        <number>1</number>
        <pkz>aaa</pkz>
        <pkz>bbb</pkz>
    </row>
    <row>
        <number>2</number>
        <pkz>ccc</pkz>
        <pkz>aaa</pkz>
        <pkz>ddd</pkz>
    </row>
    <row>
        <number>3</number>
        <pkz>aaa</pkz>
        <pkz>yyy</pkz>
    </row>
</root>

结果应该是这样的:

<row>
    <number>1</number>
    <pkz>aaa</pkz>
</row>
<row>       
    <number>1</number>
    <pkz>bbb</pkz>
</row>
<row>           
    <number>2</number>
    <pkz>ccc</pkz>
</row>
<row>           
    <number>2</number>
    <pkz>aaa</pkz>
</row>
<row>           
    <number>2</number>
    <pkz>ddd</pkz>
</row>
<row>           
    <number>3</number>
    <pkz>aaa</pkz>
</row>
<row>           
    <number>3</number>
    <pkz>yyy</pkz>
</row>

在此先感谢 BR, 华美

【问题讨论】:

  • 您自己的编码尝试对您有多大帮助?你有没有例如设法至少分别复制&lt;row/&gt;s 中的所有&lt;pkz/&gt;s,忽略&lt;number/&gt;s?请显示最接近目标的代码,然后说明缺少的内容。

标签: xml xslt tags siblings


【解决方案1】:

您可以使用以下 XSL 转换来扁平化您的 xml。

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

<xsl:template match="row">
    <xsl:apply-templates select="*[name()!='number']"/>
</xsl:template>

<xsl:template match="row/*">
    <row>
        <xsl:copy-of select="../number"/>
        <xsl:copy-of select="."/>
    </row>
</xsl:template>

【讨论】:

    猜你喜欢
    • 2014-12-05
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    • 2015-11-15
    • 2012-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多