0
我需要创建的根元素,其中是不是在输入如何创建我的输入xml的根元素?
XML我作为可用的模板:
<Body>
<p outputclass="Body_Text">AAAA.</p>
<p outputclass="Normal"><b>Q:</b> Why?</p>
<p outputclass="Body_Text_Question"><b>Q:</b> What?</p>
<p outputclass="Body_Text_Answer"><b>A:</b> In.</p>
<p outputclass="Body_Text_Answer">The</p>
<p outputclass="Normal"><b>Q:</b> Why?</p>
<p outputclass="Body_Text_Question"><b>Q:</b> What?</p>
<p outputclass="Body_Text_Answer"><b>A:</b> In.</p>
<p outputclass="Body_Text_Answer">The</p>
</Body>
XSL我使用:
<xsl:template match="p[@outputclass='Body_Text']">
<para>
<xsl:apply-templates/>
</para>
</xsl:template>
<xsl:template match="p[@outputclass='Normal']">
<item num="{replace(node()[1], '^\s+', '')}">
<para><xsl:apply-templates select="node()[position() gt 1]"/></para>
</item>
</xsl:template>
<xsl:template match="p[@outputclass='Body_Text_Question'][b]">
<item num="{replace(node()[1], '^\s+', '')}">
<para><xsl:apply-templates select="node()[position() gt 1]"/></para>
</item>
</xsl:template>
<xsl:template match="p[@outputclass='Body_Text_Answer'][b]" priority="10">
<item num="{replace(node()[1], '^\s+', '')}">
<para><xsl:apply-templates select="node()[position() gt 1]"/></para>
</item>
</xsl:template>
<xsl:template match="p[@outputclass='Body_Text_Answer']">
<para><xsl:apply-templates/></para>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
输出我得到如:
<Body>
<para>AAAA.</para>
<item num="Q:">
<para> Why?</para>
</item>
<item num="Q:">
<para> What?</para>
</item>
<item num="A:">
<para> In.</para>
</item>
<para>The</para>
<item num="Q:">
<para> Why?</para>
</item>
<item num="Q:">
<para> What?</para>
</item>
<item num="A:">
<para> In.</para>
</item>
<para>The</para>
</Body>
预期的输出是(需要关闭该项目列表中的正常对位和orderlist后的所有问题和答案类型的结尾):
<Body>
<para>AAAA.</para>
<orderedlist type="manual">
<item num="Q:">
<para> Why?</para>
</item>
<item num="Q:">
<para> What?</para>
</item>
<item num="A:">
<para> In.</para>
<para>The</para></item>
<item num="Q:">
<para> Why?</para>
</item>
<item num="Q:">
<para> What?</para>
</item>
<item num="A:">
<para> In.</para>
<para>The</para></item>
</orderedlist>
</Body>
我需要为这个问题和答案类型创建根元素(顺序列表)。我正在使用XSLT版本2.0。
谢谢@tmakita – User515