Pdf generation 向现有节点添加属性

Pdf generation 向现有节点添加属性,pdf-generation,xslt-1.0,xsl-fo,jaxp,Pdf Generation,Xslt 1.0,Xsl Fo,Jaxp,我需要在fo:sequence标记中添加一个属性initial page number 标签是 <fo:page-sequence master-reference="alternating" initial-page-number="1"><fo:page-sequence> .. ... </fo:page-sequence> .. ... 变成 <fo:page-sequence master-reference="alternating"

我需要在fo:sequence标记中添加一个属性initial page number

标签是

<fo:page-sequence master-reference="alternating" initial-page-number="1"><fo:page-sequence>
..
...
</fo:page-sequence>

..
...
变成

<fo:page-sequence master-reference="alternating" initial-page-number="1">
..
</fo:page-sequence>

..
但通过xslt,我获得了两个fo:page:

<fo:page-sequence master-reference="alternating" initial-page-number="1"><fo:page-sequence>
</fo:page-sequence></fo:page-sequence>

如何用新的fo:page序列替换旧的fo:page序列

这是我的xsl样式表:

<xsl:stylesheet>

<xsl:template match="ss:split/fo:page-sequence">
<xsl:choose>
<xsl:when test="@master-reference['alternating']">
    <xsl:element name="fo:page-sequence">
        <xsl:for-each select="@*">
                <xsl:attribute name="{name()}"><xsl:value-of select="."/></xsl:attribute>
        </xsl:for-each>
        <xsl:attribute name="initial-page-number">
            <xsl:value-of select="1"/>
        </xsl:attribute>
        <xsl:copy>
            <xsl:apply-templates select="child::*"/>
        </xsl:copy>
    </xsl:element>
</xsl:when>
</xsl:choose>
</xsl:template>



<xsl:template match='comment()'>
 <xsl:comment><xsl:value-of select="."/></xsl:comment>
</xsl:template>


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

</xsl:stylesheet>

您的样式表使用
创建一个
fo:page sequence
,另一个使用
(因为匹配元素是
fo:page sequence


只需删除
xsl:copy
(但保留
,因为您想处理当前节点的子节点!),您就可以得到所需的内容。

您的样式表每
fo:page sequence
更改一次,因为谓词
['alternative']
总是正确的

您可以在匹配模式中检查
主参考
值,另外您可以只复制现有属性,并且可以复制
fo:page sequence
的内容,因为它不包含另一个
fo:page sequence

<xsl:template
      match="ss:split/fo:page-sequence[@master-reference = 'alternating']">
    <xsl:copy>
        <xsl:copy-of select="@*" />
        <xsl:attribute name="initial-page-number">1</xsl:attribute>
        <xsl:copy-of select="node()" />
    </xsl:copy>
</xsl:template>

1.