1

我必须将 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>

我想获取链接名称的 url。在这里,我想获取“google”链接的 url。我知道它在关系中,但我无法使用 xslt 访问它。有人知道吗?(可能写一个模板?)请帮帮我!

4

1 回答 1

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(在此示例中为“rId5”的硬编码值)选择 URL 的值:

/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>
于 2012-07-03T03:51:09.953 回答