要使用XSLT插入到第二个样式表中的XML节点

时间:2014-11-24 10:28:59

标签: xml xslt

我必须将一些包含子节点的完整节点插入到XML文件中的这些节点的所有属性到第二个XSLT样式表中,我想用第一个创建。

这是XML的一个例子:

<?xml version="1.0" encoding="UTF-8"?>
<data xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" 
      xmlns:fo="http://www.w3.org/1999/XSL/Format"
      xmlns:xslout="it's replaced to xmlns:xsl within the transformation">

    <text-german>

        <fo:block font-weight="bold" space-after.optimum="10mm">
            Ihr Coupon
        </fo:block>
        <fo:block space-after.optimum="10mm">
            <xsl:text>Guten Tag </xsl:text>
            <xslout:value-of select="givenname"/>
            <xslout:text> </xslout:text>
            <xslout:value-of select="surname" />
            <xslout:text>,</xslout:text>
        </fo:block>
        <fo:block space-after.optimum="5mm">
            <xslout:text>Some text...</xslout:text>
            <xslout:value-of select="issuerLong" />
            <xslout:text>Here more text...</xslout:text>
        </fo:block>
        <fo:block>
            <fo:inline font-style="italic">
                <xslout:text>Coupon: </xslout:text>
            </fo:inline>
            <fo:inline font-weight="bold">
                <xslout:value-of select="code" />
            </fo:inline>
        </fo:block>
    </text-german>

</data>

我想将节点<text-german>的所有内容插入到输出中。之前,我尝试使用命令<xsl:value of select="text-german"/>执行此操作,但这只会影响此特定节点的内容,而不会影响具有内容和其属性的继承子节点。

如何在输出文件中插入节点的所有内容?

为了更好地理解我想在输出中输入的文字:

<fo:block font-weight="bold" space-after.optimum="10mm">
    Ihr Coupon
</fo:block>
<fo:block space-after.optimum="10mm">
    <xsl:text>Guten Tag </xsl:text>
    <xslout:value-of select="givenname"/>
    <xslout:text> </xslout:text>
    <xslout:value-of select="surname" />
    <xslout:text>,</xslout:text>
</fo:block>
<fo:block space-after.optimum="5mm">
    <xslout:text>Some text...</xslout:text>
    <xslout:value-of select="issuerLong" />
    <xslout:text>Here more text...</xslout:text>
</fo:block>
<fo:block>
    <fo:inline font-style="italic">
        <xslout:text>Coupon: </xslout:text>
    </fo:inline>
    <fo:inline font-weight="bold">
        <xslout:value-of select="code" />
    </fo:inline>
 </fo:block>

1 个答案:

答案 0 :(得分:1)

您似乎需要使用xsl:copy-of

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="xml" indent="yes"/>
    <xsl:template match="/data/text-german">
        <xsl:copy-of select="./*"/>
    </xsl:template>
</xsl:stylesheet>

您可能需要调整上述内容以满足您的需求。