我需要一个不同种类的部分级别标签OutputClass类名ListN1,越南和ListN3,南段正常
我的源XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<Body>
<p outputclass="Body_Text">AAAA.</p>
<p outputclass="Body_Text">AAAA.</p>
<p outputclass="ListN1-Nam"><b>A. Selvam-4, Item 1</b></p>
<p outputclass="Body_Text">AAAA.</p>
<p outputclass="BodyText_Center">AAAA.</p>
<p outputclass="BodyText_Center">AAAA.</p>
<p outputclass="BodyText_Center">AAAA.</p>
<p outputclass="Body_Text">AAAA.</p>
<p outputclass="Body_Text">AAAA.</p>
<p outputclass="ListN3-Nam"><b>1. Selvam-4, Item 1</b></p>
<p outputclass="Body_Text">AAAA.</p>
<p outputclass="ListN3-Nam"><b>2. Selvam-4, Item 1</b></p>
<p outputclass="Body_Text">AAAA.</p>
<p outputclass="Body_Text">AAAA.</p>
<p outputclass="Body_Text">AAAA.</p>
<p outputclass="BodyText_Center">AAAA.</p>
<p outputclass="ListN1-Nam"><b>B. Selvam-4, Item 1</b></p>
<p outputclass="BodyText_Center">AAAA.</p>
<p outputclass="BodyText_Center">AAAA.</p>
<p outputclass="Body_Text">AAAA.</p>
<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>
我的XSLT我已经使用这个科级格式化:
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="html" doctype-public="XSLT-compat" omit-xml-declaration="yes" encoding="UTF-8" indent="yes" />
<xsl:strip-space elements="*"/>
<xsl:template match="Body">
<xsl:copy>
<xsl:for-each-group select="node()" group-ending-with="p[@outputclass='Body_Text']">
<xsl:choose>
<xsl:when test="current-group()/self::p[@outputclass='Body_Text']">
<xsl:apply-templates select="current-group()"/>
</xsl:when>
<xsl:otherwise>
<orderedlist type="manual">
<xsl:apply-templates select="current-group()"/>
</orderedlist>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each-group>
</xsl:copy>
</xsl:template>
<xsl:template match="p[@outputclass='ListN1-Nam']" mode="id-num">
<section level="sect2" number-type="manual">
<xsl:apply-templates select="title" mode="id-num"/>
</section>
</xsl:template>
<xsl:template match="p[@outputclass='ListN1-Nam']" mode="id-num">
<xsl:variable name="num">
<xsl:analyze-string select="." regex="(\w.)\s">
<xsl:matching-substring>
<xsl:value-of select="regex-group(1)"/>
</xsl:matching-substring>
</xsl:analyze-string>
</xsl:variable>
<xsl:attribute name="num" select="$num"/>
</xsl:template>
<xsl:template match="p[@outputclass='ListN1-Nam']/text()">
<xsl:value-of select="replace(., '\w.\s', '$1')"/>
</xsl:template>
<xsl:template match="p[@outputclass='ListN3-Nam']" mode="id-num">
<section level="sect3" number-type="manual">
<xsl:apply-templates select="title" mode="id-num"/>
</section>
</xsl:template>
<xsl:template match="p[@outputclass='ListN3-Nam']" mode="id-num">
<xsl:variable name="num">
<xsl:analyze-string select="." regex="(\d.+?)\s">
<xsl:matching-substring>
<xsl:value-of select="regex-group(1)"/>
</xsl:matching-substring>
</xsl:analyze-string>
</xsl:variable>
<xsl:attribute name="num" select="$num"/>
</xsl:template>
<xsl:template match="p[@outputclass='ListN3-Nam']/text()">
<xsl:value-of select="replace(., '\d.\s', '$1')"/>
</xsl:template>
<xsl:template match="p[@outputclass='Body_Text']">
<para>
<xsl:apply-templates/>
</para>
</xsl:template>
<xsl:template match="p[@outputclass='BodyText_Center']">
<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>
</xsl:transform>
放出来,如下图所示我正在不段级别的格式获得:
<!DOCTYPE html
PUBLIC "XSLT-compat">
<Body>
<para>AAAA.</para>
<para>AAAA.</para>
<p outputclass="ListN1-Nam"><b>A. Selvam-4, Item 1</b></p>
<para>AAAA.</para>
<para>AAAA.</para>
<para>AAAA.</para>
<para>AAAA.</para>
<para>AAAA.</para>
<para>AAAA.</para>
<p outputclass="ListN3-Nam"><b>1. Selvam-4, Item 1</b></p>
<para>AAAA.</para>
<p outputclass="ListN3-Nam"><b>2. Selvam-4, Item 1</b></p>
<para>AAAA.</para>
<para>AAAA.</para>
<para>AAAA.</para>
<para>AAAA.</para>
<p outputclass="ListN1-Nam"><b>B. Selvam-4, Item 1</b></p>
<para>AAAA.</para>
<para>AAAA.</para>
<para>AAAA.</para>
<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>
</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>
</orderedlist>
</Body>
所需的输出格式作为部分电平格式和“ListN1-南”标签作为部分主段和“ListN3-南”第二水平像下面NUM属性值:
<!DOCTYPE html
PUBLIC "XSLT-compat">
<Body>
<para>AAAA.</para>
<para>AAAA.</para>
<section level="sect2" num="A." number-type="manual">
<title>Selvam-4, Item 1</title>
<para>AAAA.</para>
<para>AAAA.</para>
<para>AAAA.</para>
<para>AAAA.</para>
<para>AAAA.</para>
<para>AAAA.</para>
<para>AAAA.</para>
<para>AAAA.</para>
<para>AAAA.</para>
<section level="sect3" num="1." number-type="manual">
<title>Selvam-4, Item 1</title>
<para>AAAA.</para>
</section>
<section level="sect3" num="2." number-type="manual">
<title>Selvam-4, Item 1</title>
<para>AAAA.</para>
<para>AAAA.</para>
<para>AAAA.</para>
<para>AAAA.</para>
</section>
</section>
<section level="sect2" num="B." number-type="manual">
<title>Selvam-4, Item 1</title>
<para>AAAA.</para>
<para>AAAA.</para>
<para>AAAA.</para>
<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>
</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>
</orderedlist>
</section>
</Body>
请建议!
提前致谢