获取超链接的网址

时间:2012-07-02 16:45:56

标签: xslt xpath xslt-1.0 xslt-2.0

我必须将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访问它。有人知道吗? (可能写一个模板?)请帮助我!

1 个答案:

答案 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>