我的输入就像,
<part type="backmatter">
<section type="index">
<title>Index<target id="page236"/></title>
<section>
<title>A</title>
........
</listing>
</section>
</section>
</part>
输出应该是,
<part type="backmatter">
<section type="index">
<title>Index<target id="page236"/></title>
<section>
<title>A</title>
........
</listing>
</section>
</section>
</part>
我的xslt就像,
<xsl:template match="part[@type='backmatter']">
<xsl:choose>
<xsl:when test="contains(title[1], 'Index')">
<xsl:text disable-output-escaping="yes"><!--</xsl:text>
<xsl:copy><xsl:apply-templates select="node() | @*"/></xsl:copy>
<xsl:text disable-output-escaping="yes">--></xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:copy><xsl:apply-templates select="node() | @*"/></xsl:copy>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
使用上面提到的xslt时,输出反映为,
<part type="backmatter">
<!--<section type="index">
<title>Index<target id="page236"/></title>
<section>
<title>A</title>
........
</listing>
</section>
</section>-->
</part>
我们需要评论&#34;部分&#34;元素也是不需要的。但是,我们不需要空元素。
答案 0 :(得分:1)
我不知道发布的代码如何适用于part
有title
个大孩子的<xsl:template match="part[@type='backmatter' and section/title[contains(., 'Index')]]">
<xsl:text disable-output-escaping="yes"><!--</xsl:text>
<xsl:copy-of select="."/>
<xsl:text disable-output-escaping="yes">--></xsl:text>
</xsl:template>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
元素,但听起来好像你想要
<xsl:mode on-no-match="shallow-copy"/>
<xsl:template match="part[@type='backmatter' and section/title[contains(., 'Index')]]">
<xsl:comment select="serialize(.)"/>
</xsl:template>
请注意,转移到XSLT 3,例如Saxon 9.8允许你避免禁用输出转义黑客并简单地使用
select min(a_day)
as from_date
,max(a_day)
as till_date
,sum(decode(to_char(a_day,'D')
,1,0
,7,0
,1
)
)
as wrk_days_count
from (select trunc(sysdate,'iw') + level - 1
as a_day
from dual
connect by level < 8)
;