2012-07-02 1 views
1

Мне нужно написать документы xslt в wordml (2007). Есть гиперссылки, как показано ниже.Получить URL-адрес гиперссылки

< 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-адрес для ссылки. Здесь я хочу получить URL-адрес ссылки «google». Я знаю его там в отношениях, но я не могу получить доступ к xslt. Кто-нибудь знает? (Возможно, написав шаблон?), Пожалуйста, помогите мне!

+0

Никто не может помочь? – Setinger

+0

Ваш XML не соответствует вашему описанию. Где находится URL? Где отношения? –

+0

URL-адрес находится в «отношении» обычного слова 2007-го документа .. его вроде этого. <Отношения xmlns = "http://schemas.openxmlformats.org/package/2006/relationships"> <Идентификатор отношения = "rId4" Тип = "http://schemas.openxmlformats.org/officeDocument/2006/ отношения/гиперссылка «Target =» http://www.gmail.com/ « – Setinger

ответ

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, может быть использованы для выбора значения URL, используя значение w:hyperlink/@r:id (жестко закодированного значения «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> 
+0

Вы более чем здоровы! это работает как шарм! Хотел бы я проголосовать за этот ответ. Но для этого мне нужна больше репутации. Это действительно потрясающе!^_^ – Setinger

+0

У меня есть другой вопрос. Можете ли вы заглянуть в это?^_^ – Setinger

+0

Я проголосовал за ваш ответ.^_ ^ – Setinger