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>