我必须将xslt写入wordml(2007)文档。有如下的超链接。
< w:p w:rsidR="00FD086A" w:rsidRDefault="00425A76" w:rsidP="00FD086A">
< w: hyperlink r:id="rId4" w:history="1">
< w:r w:rsidR="00FD086A" w:rsidRPr="00425A76">
< w:rPr>
< w:rStyle w:val="Hyperlink"/>
< /w:rPr>
< w:t>google</w:t>
< /w:r>
< /w:hyperlink>
< /w:p>
我想获取链接名称的网址。在这里,我想获得“谷歌”链接的网址。我知道它存在于关系中,但我无法使用xslt访问它。有人知道吗? (可能写一个模板?)请帮助我!
答案 0 :(得分:2)
假设声明了以下名称空间前缀:
xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"
xmlns:pkg="http://schemas.microsoft.com/office/2006/xmlPackage"
xmlns:rel="http://schemas.openxmlformats.org/package/2006/relationships"
xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
以下XPath可用于使用w:hyperlink/@r:id
的值选择URL的值(在此示例中为硬编码值“rId5”):
/pkg:package
/pkg:part
/pkg:xmlData
/rel:Relationships
/rel:Relationship[@Id='rId5']/@Target
您可以在w:hyperlink
上匹配模板的上下文中使用它来生成HTML锚元素,如下所示:
<xsl:template match="w:hyperlink">
<a href="{/pkg:package
/pkg:part
/pkg:xmlData
/rel:Relationships
/rel:Relationship[@Id=current()/@r:id]/@Target}">
<xsl:apply-templates/>
</a>
</xsl:template>