我正在寫的模板,其中,如果存在包含footnote
和沒有另一個footnote
在這兩個(the processing instruction
和current footnote
)之間我需要添加一個線後main
的處理指令。匹配前一元素文本包含
下面是我的XML。
<?xml version="1.0" encoding="UTF-8"?>
<body>
<?xpp MAIN;2;0;0;0;45;0;0?>
<?xpp foot;art10_ft7;suppress?>
<?xpp FOOT;art10_ft7;1?>
<footnote label="7" id="art10_ft7">
<para>
text
</para>
</footnote>
<?xpp foot;art10_ft8;suppress?>
<?xpp FOOT;art10_ft8;1?>
<footnote label="8" id="art10_ft8">
<para>
text
</para>
</footnote>
<?xpp foot;art10_ft9;suppress?>
<?xpp FOOT;art10_ft9;1?>
<footnote label="9" id="art10_ft9">
<para>
text
</para>
</footnote>
<?xpp MAIN;3;0;0;0;46;0;0?>
<?xpp foot;art10_ft20;suppress?>
<?xpp FOOT;art10_ft20;1?>
<footnote label="20" id="art10_ft20">
<para>text</para>
</footnote>
<?xpp foot;art10_ft20;suppress?>
<?xpp FOOT;art10_ft20;1?>
<footnote label="21" id="art10_ft20">
<para>text</para>
</footnote>
<?xpp foot;art10_ft20;suppress?>
<?xpp FOOT;art10_ft20;1?>
<footnote label="22" id="art10_ft20">
<para>text</para>
</footnote>
<?xpp MAIN;3;0;0;0;46;0;0?>
<?xpp foot;art10_ft20;suppress?>
<?xpp FOOT;art10_ft20;1?>
<footnote label="23" id="art10_ft20">
<para>text</para>
</footnote>
</body>
我試着用下面的XSLT。
<xsl:template match="footnote" mode="footnote">
<xsl:variable name="count" select="count(preceding::footnote)+1"/>
<div class="tr_footnote">
<div class="footnote">
<sup>
<a>
<xsl:attribute name="name"><xsl:text>ftn.</xsl:text><xsl:value-of select="$count"/></xsl:attribute>
<xsl:attribute name="href"><xsl:text>#f</xsl:text><xsl:value-of select="$count"/></xsl:attribute>
<xsl:attribute name="class"><xsl:text>tr_ftn</xsl:text></xsl:attribute>
<xsl:value-of select="@label"/>
</a>
</sup>
<xsl:apply-templates/>
</div>
</div>
<!--Here I need the change-->
<xsl:if test="following::processing-instruction('xpp')/text()[contains(.,'MAIN')][1][preceding::footnote[1]/@label=./@label]">
<xsl:text>-------------------------</xsl:text>
</xsl:if>
</xsl:template>
目前我正在獲得下面的輸出。
<section class="tr_footnotes"><hr /><?pb label=''?>
<div class="tr_footnote">
<div class="footnote"><sup><a name="ftn.1" href="#f1" class="tr_ftn">7</a></sup>
<para>text</para>
</div>
</div>
<div class="tr_footnote">
<div class="footnote"><sup><a name="ftn.2" href="#f2" class="tr_ftn">8</a></sup>
<para>text</para>
</div>
</div>
<div class="tr_footnote">
<div class="footnote"><sup><a name="ftn.3" href="#f3" class="tr_ftn">9</a></sup>
<para>text</para>
</div>
</div><?pb label=''?>
<div class="tr_footnote">
<div class="footnote"><sup><a name="ftn.4" href="#f4" class="tr_ftn">20</a></sup>
<para>text</para>
</div>
</div>
<div class="tr_footnote">
<div class="footnote"><sup><a name="ftn.5" href="#f5" class="tr_ftn">21</a></sup>
<para>text</para>
</div>
</div>
<div class="tr_footnote">
<div class="footnote"><sup><a name="ftn.6" href="#f6" class="tr_ftn">22</a></sup>
<para>text</para>
</div>
</div><?pb label=''?>
<div class="tr_footnote">
<div class="footnote"><sup><a name="ftn.7" href="#f7" class="tr_ftn">23</a></sup>
<para>text</para>
</div>
</div>
</section>
我的預期輸出是
<!DOCTYPE html
PUBLIC "XSLT-compat">
<hmtl>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>New Version!</title>
</head>
<section class="tr_footnotes"><hr /><?pb label=''?>
<div class="tr_footnote">
<div class="footnote"><sup><a name="ftn.1" href="#f1" class="tr_ftn">7</a></sup>
<para>text</para>
</div>
</div>
<div class="tr_footnote">
<div class="footnote"><sup><a name="ftn.2" href="#f2" class="tr_ftn">8</a></sup>
<para>text</para>
</div>
</div>
<div class="tr_footnote">
<div class="footnote"><sup><a name="ftn.3" href="#f3" class="tr_ftn">9</a></sup>
<para>text</para>
</div>
</div>-------------------------<?pb label=''?>
<div class="tr_footnote">
<div class="footnote"><sup><a name="ftn.4" href="#f4" class="tr_ftn">20</a></sup>
<para>text</para>
</div>
</div>
<div class="tr_footnote">
<div class="footnote"><sup><a name="ftn.5" href="#f5" class="tr_ftn">21</a></sup>
<para>text</para>
</div>
</div>
<div class="tr_footnote">
<div class="footnote"><sup><a name="ftn.6" href="#f6" class="tr_ftn">22</a></sup>
<para>text</para>
</div>
</div>-------------------------<?pb label=''?>
<div class="tr_footnote">
<div class="footnote"><sup><a name="ftn.7" href="#f7" class="tr_ftn">23</a></sup>
<para>text</para>
</div>
</div>
</section>
</hmtl>
的條件是這樣。有一個footnote
和following
它有處理指令,它們有2種類型。 <?xpp MAIN;2;0;0;0;45;0;0?>
和<?xpp foot;art10_ft7;suppress?>
。在這裏我的查詢是我需要匹配following processing instruction
containing
MAIN
,並且current footnote
和processing instruction
之間不應該有其他footnote
,並且如果條件匹配,我需要畫一條線。
我正在使用以下xpath來匹配條件。但是這不能按預期工作。
<xsl:if test="following::processing-instruction('xpp')/text()[contains(.,'MAIN')][1][preceding::footnote[1]/@label=./@label]">
<xsl:text>-------------------------</xsl:text>
</xsl:if>
請讓我知道我該怎麼做。
感謝
嘿這工作真棒,但你能讓我知道我在哪裏我錯了原來的職位。 – user3872094
@ user3872094我沒有提到關於*「'./@ label'在你最初的'test'表達式的末尾」* :) – har07