2012-05-31 4 views
1

Источника:экранное пространство имен узла в XSLT

<Data> 
    <heading xmlns="Some Uri"> 
       <text>aaa</text> 


    </heading> 
    <Data> 

XSLT написал

  <?xml version="1.0" encoding="utf-8"?> 
      <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
      xmlns:link1="Some Uri"> 
       <xsl:output method="xml" indent="yes"/> 

        <xsl:template match="Data"> 
        <xsl:value-of select="link1:heading/namespace-uri()"/> 

        </xsl:template> 


      </xsl:stylesheet> 

Я получаю сообщение об ошибке.

Может ли кто-нибудь помочь, как получить пространство имен.

спасибо.

+0

Я считаю, вы ищете 'namespace-uri()' http://stackoverflow.com/questions/529556/xpath-find-elements-by-attribute-namespace – StuartLC

+0

Ваш вход XML не является значением (дополнительно ''). – Phrogz

ответ

1

nonnb должен был бы сделать комментарий ответ ...

Функция пространства имен URI() делает то, что вы хотите.

+0

Я пытался с этим получить ошибки. Я отредактировал вопрос с тем, что я сделал. – Patan

+0

Я отредактировал вопрос, и я не могу получить пространство имен узла. Можете ли вы мне помочь, как это сделать? – Patan

1
<xsl:value-of select="link1:heading/namespace-uri()"/> 

В XSLT 1.0/XPath 1.0 это ошибка синтаксиса.

Правильно это:.

<xsl:value-of select="namespace-uri(link1:heading)"/> 

В XSLT 2.0/XPath 2.0 это опять ошибка (аргумент для namespace-uri() не может быть пропущены Правильнее:

<xsl:value-of select="link1:heading/namespace-uri(.)"/> 
+0

Я думаю, что select = "link1: heading/namespace-uri()" должен работать в XSLT 2.0. –

+0

@MichaelKay: Возможно, вы правы - мне сложно и не нужно помнить, какие именно функции могут быть опущены, а какие нет - так что безопаснее всегда предоставлять аргумент. –

Смежные вопросы