Xml 如何执行由两部分组成的XSLT

Xml 如何执行由两部分组成的XSLT,xml,xslt,Xml,Xslt,我该如何改变这个 <CHAPT> <CHAPTNO>1.1</CHAPTNO> <SUBJ>Introduction</SUBJ> <P>foo text</P> <P>foo text</P> .. and so on </CHAPT> 1.1 介绍 foo文本 foo text。。等等 为此: <p class="chapheader"&g

我该如何改变这个

<CHAPT>
  <CHAPTNO>1.1</CHAPTNO>
  <SUBJ>Introduction</SUBJ>
  <P>foo text</P>
  <P>foo text</P>  .. and so on
</CHAPT>

1.1
介绍

foo文本

foo text

。。等等
为此:

<p class="chapheader"><span class="chapnumbers">1.1 </span>Introduction</p>
<P>foo text</P>
<P>foo text</P>

1.1简介

foo文本

foo文本

但是,仅当
直接位于
之前时。因为XML中有其他
不在
之后,我不希望这些独立主题行被格式化为章节标题


我是XSLT新手,第二个模板卡住了。

试试这个。下面是我的示例XML(我添加了一个根元素用于测试):


1.1
导言1111

foo文本

foo文本

导言2222

foo文本

foo文本

3333 导言3333

foo文本

foo文本

XSLT:


结果输出:

<p class="chapheader"><span class="chapnumbers">1.1</span>Introduction1111</p>
<p class="chapheader"><span class="chapnumbers">3333</span>Introduction3333</p>

1.1简介1111

3333简介3333


您能提供一个更完整的XML片段吗?每个元素对是否都包含在其他元素中?我发布了一些编辑。我希望这有帮助。谢谢。测试内容如下:找到subc元素,其中存在一个进动CHAPTNO元素。这很有效,谢谢。非常有趣的代码。。以我目前的技术水平,我是不会想到的。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="html" encoding="utf-8" indent="no"/>
 <xsl:template match="/">
        <xsl:for-each select="root/CHAPT">
        <xsl:if test="SUBJ[count(../CHAPTNO)=1]">
           <p class="chapheader"> 
           <span class="chapnumbers"><xsl:value-of select="CHAPTNO"/></span>
                     <xsl:value-of select="SUBJ"/>
             </p>
        </xsl:if>
     </xsl:for-each>
 </xsl:template>
</xsl:stylesheet>
<p class="chapheader"><span class="chapnumbers">1.1</span>Introduction1111</p>
<p class="chapheader"><span class="chapnumbers">3333</span>Introduction3333</p>