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 を取得したいと考えています。Relationships にあることは知っていますが、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"

w:hyperlink/@r:id次の XPath を使用して、 (この例では "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 に答える