我希望使用模板匹配来选择动态标签
输入xml具有用于页面划分的标签<?PG 1?>,<?PG 2?>,<?PG 3?>
.....等
<?PG
不变,但数字不断增加。
我希望使用像
这样的东西 <xsl:template match="?PG*" >
some conditions..
</xsl:template>
如何选择节点沉思模板匹配
输入中还有许多特殊字符参数,如&amp; ndash的; ,&amp; MDASH; ,&amp; rsquo的;
有没有办法可以用&amp;#8211替换它们&amp; ndash,对其他人来说也是如此
示例输入:
<TXTBKBD>
<?PG 1?>
<DIVISIONA>
<THD><HD>Preliminary Section: Materials</HD></THD>
<BY>
<PN><FN>Christopher</FN><SN>Womack</SN><DEG>PhD, FACSM</DEG>
<ROLE>Section Editor</ROLE></PN>
</BY>
<?PG 2?>
<CHAPTER CHAN="B01429413-DA1-C1" V="2006.2" REPLACE="NO">
<CHSO>
<THD><HNUM>Chapter 1</HNUM><HD>Functional Anatomy</HD></THD>
<BY><PN><SN>&NA;</SN></PN></BY>
</CHSO>
xml大约是30 mb所以太大而无法放在这里
获取输入,因为我希望输出
<a name="PG1"> </a><div class="pagenum"><div>P.1</div></div>
答案 0 :(得分:0)
关于标签<?PG 1?>,<?PG 2?>,<?PG 3?>
,这些是处理说明。您可以将它们与名为“processing-instruction()”的有用命令进行匹配
<xsl:template match="processing-instruction()">
或者,如果你想更具体,你可以这样做
<xsl:template match="processing-instruction()[name() = 'PG']">
要调用这些模板,您显然需要在XSLT中的某处使用 xsl:apply-templates 。
匹配它们后,使用 name()函数获取名称很简单,使用 xsl:value-of
获取值<xsl:template match="processing-instruction()[name() = 'PG']">
<a name="{name()}"> </a>
<div class="pagenum">
<div>P.<xsl:value-of select="." /></div>
</div>
</xsl:template>
当匹配<?PG 1?>
处理指令时,输出以下内容
<a name="PG"/><div class="pagenum"><div>P.1</div></div>