我有以下xml,
<doc>
<table type="Horizontal lines" width="100%">
<group cols="5">
<colspec colname="1" colwidth="58%"/>
<colspec colname="2" colwidth="32%"/>
<thead>
<row>
<entry namest="1" align="center">
<p type="Table head">Testing Table</p>
</entry>
<entry namest="2" align="center">
<p type="Table head">Testing Head</p>
</entry>
</row>
</thead>
<tbody>
<row>
<entry namest="1" align="left">
<p type="Table text">Mobile OS</p>
</entry>
<entry namest="2" align="left">
<p type="Table text">Android</p>
</entry>
</row>
<row>
<entry namest="4" align="left">
<p type="Table text">
<link type="Hyperlink">www.facebook.com</link>
</p>
<p type="Table text"/>
</entry>
<entry namest="4" align="left">
<p type="Table text">
<link type="Hyperlink">www.skynews.com</link>
</p>
<p type="Table text"/>
</entry>
</row>
</tbody>
</group>
</table>
<para>
<entry namest="4" align="left">
<p type="Table text">
<link type="Hyperlink">www.devandroid.com</link>
</p>
<p type="Table text">
<link type="Hyperlink">www.google.com</link>
</p>
<p type="Table text"/>
</entry>
</para>
<doc>
正如您所看到的,文档中有一些<link>
个节点放置了<table>
节点的孙子节点,并且一些<link>
节点不在<table>
个节点之内(没有任何关系)使用<table>
节点。
我需要做的只是将<link>
个节点文本(它们是<table>
节点的孙子节点)转换为大写字母。
(在此示例中,只应将<link type="Hyperlink">www.facebook.com</link> and <link type="Hyperlink">www.skynews.com</link>
大写。)
那么,我怎样才能选择仅在<link>
节点内的<table>
个节点?
我尝试了一些代码如下,但它没有给出结果。
<xsl:template match="table::link">
<xsl:copy>
<xsl:copy-of select="@*"/>
more codes...
</xsl:copy>
</xsl:template>
任何建议如何访问孙节点的表节点?
答案 0 :(得分:0)
您可以对表格中的链接使用以下匹配模式(链接的默认模板规则优先级较低):
<xsl:template match="link[ancestor::table]">
...
</xsl:template>
<xsl:template match="link">
...
</xsl:template>