Raw Xml:
<section sectiontype="WITNESSES">
<bodytext>
<p>
<text>
<person:person>
<person:name.text>NEIL CAVUTO, FBN ANCHOR</person:name.text>
</person:person>
</text>
</p>
<p>
<text>
<person:person>
<person:name.text>REP. BARNEY FRANK, D-MASS.</person:name.text>
</person:person>
</text>
</p>
</bodytext>
</section>
我有XSL模板:
<xsl:template match="base:section[@sectiontype='WITNESSES']/base:bodytext/base:p">
<xsl:element name="nl"/>
<xsl:element name="{name()}">
<xsl:copy-of select="@*"/>
<xsl:attribute name="display">block</xsl:attribute>
<xsl:element name="hdr">
<xsl:attribute name="typestyle">BF</xsl:attribute>
<xsl:attribute name="inline">Y</xsl:attribute>
<xsl:text>WITNESSES:</xsl:text>
<xsl:apply-templates/>
</xsl:element>
</xsl:element>
</xsl:template>
当前输出我得到:
证人:NEIL CAVUTO,FBN ANCHOR
证人:REP。 BARNEY FRANK,D-MASS。
期望的输出:
证人:
NEIL CAVUTO,FBN主播
REP。 BARNEY FRANK,D-MASS。
答案 0 :(得分:0)
您提供了一个模板,该模板与某些&lt; base:p&gt;匹配。元素。它为与其匹配的每个元素单独实例化,并且每个实例化在结果树中创建一个文本节点,其值为&#34; WITNESSES&#34;,然后对元素的子元素进行转换。如果要将证人分组在一个标题下,则需要通过对这些base:p
元素的共同祖先元素的变换输出标题。
例如,
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:base="http://my.com/base"
xmlns:person="http://my.com/person">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:apply-templates select=".//base:section"/>
</xsl:template>
<xsl:template match="base:section[@sectiontype='WITNESSES']">
<xsl:text>WITNESSES:</xsl:text>
<xsl:apply-templates select=".//person:name.text"/>
</xsl:template>
<xsl:template match="person:name.text">
<xsl:text></xsl:text>
<xsl:value-of select="."/>
</xsl:template>
</xsl:stylesheet>