在我的xml中,
<section level="2">
<heading class="hdgautonum2" level="2">
<inline style="\-ilx-tab-stops: left blank 0tw; ">
<gentext type="headingnumberstring">1.5 </gentext>
<deleted author="Michele Staple" date="Wed, 17 Aug 2011 18:18:00 BST">Overview</deleted>
<inserted author="Michele Staple" date="Wed, 17 Aug 2011 18:18:00 BST">Chapter summary</inserted>
</inline>
</heading>
...
</section>
,在我的xslt中,
<xsl:for-each select="child::section[@level='2']">
<xsl:variable name="subsecHead" select="if (heading//inserted) then (heading//*[not(name()='deleted')]) else heading"/>
注意:我不需要deleted
输出,所以,我做了那个例外(我的意思不是())
但是,我有这个错误
XPTY0004:不允许包含多个项目的序列作为第一个参数 substring()(“1.5 OverviewSepter summary”,“1.5”,...)
我的目标是,如果标题元素具有heading
,则选择deleted
元素及其除inserted
元素内容以外的所有后代。否则,只需选择heading
元素即可。有时,heading元素确实有inserted
元素,或者可能不是..
我有道理吗?
答案 0 :(得分:0)
<xsl:variable name="subsecHead" select="if (heading//inserted) then (heading//*[not(name()='deleted')]) else heading"/>
与
<xsl:variable name="subsecHead" select="if (heading//inserted) then (heading//* except descendant::deleted) else heading"/>
使用XSL 2.0