0

私はXMLを持っています:

<root>

<entry id="1">
<content>TEXT</content>
</entry>

<entry id="2">
<content>TEXT</content>
</entry>

<entry id="3">
<content>TEXT</content>
</entry>

<root>

次のような1行にすべての「エントリ」を含めるために、(xsltを使用して)どのように変換できますか:

<root>

<entry id="1"><content>TEXT</content></entry>
<entry id="2"><content>TEXT</content></entry>
<entry id="3"><content>TEXT</content></entry>

<root>

あなたのアイデアをありがとう

4

2 に答える 2

1

上記のコメントで述べたように、XML レイアウトは重要ではありません。XML で動作するアプリケーションは、XML ソースのレイアウトではなく、DOM ツリーのみに注意する必要があります。意味のない空白を追加または削除しても、何かが壊れたり、動作が変わったりしてはなりません。

あなたが本当に、積極的にしなければならないなら、あなたは使うことができます

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output omit-xml-declaration="yes" indent="yes" />

    <xsl:template match="node() | @*">
        <xsl:copy>
            <xsl:apply-templates select="node() | @*" />
        </xsl:copy>
    </xsl:template>

    <xsl:template match="entry/text()[normalize-space() = '']" />
    <xsl:template match="text()[
        normalize-space() = '' 
        and preceding-sibling::*[1][self::entry]
        and following-sibling::*[1][self::entry]
    ]">
        <xsl:text>&#xA;</xsl:text>
    </xsl:template>

</xsl:stylesheet>

これにより目的の XML が生成されますが、これは実際には学術的な価値しかない役に立たない操作なしであり、XPath で実行できることのいくつかを示しています。実際にはしないでください。

于 2013-06-25T14:55:59.500 に答える