1

私はこのようなxmlを持っています:

<node>
    <par>
        Lorem ipsum dolor <bold>sit</bold> amet, consectetur adipiscing elit.
    <par>
</node>

次のようなhtmlを印刷する必要があります。

<p>
    <span>Lorem ipsum dolor</span>
    <span class="bolder">sit</span>
    <span>amet, consectetur adipiscing elit.</span>
</p>

bold中央のタグでテキストを切り捨てて新しいタグを追加する方法が見つかりません

4

3 に答える 3

3

次の変換を指定した入力に適用すると、要求した結果が得られます。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="@*|node()">
        <xsl:copy><xsl:apply-templates select="@*|node()" /></xsl:copy>
    </xsl:template>

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

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

    <xsl:template match="par/text()">
        <span><xsl:copy-of select="." /></span>
    </xsl:template>

    <xsl:template match="bold">
        <span class="bolder"><xsl:value-of select="." /></span>
    </xsl:template>
</xsl:transform>
于 2013-10-31T13:24:43.113 に答える
1

You can achieve what you want by using the text() selector and indexing it either side of the internal element. Therefore the selector for 'Lorem ipsum dolor' when in context of par would be text()[1] and 'amet, consectetur adipiscing elit.' would be text()[2]

于 2013-10-31T13:22:46.840 に答える