2016-04-12 6 views
0

У меня есть документ XML, как показано ниже.XSLT пропуская пространства имен

<user:doc> 
    <user:md> 
     <user:md.number>user 1</user:md.number> 
     <user:md.name>David</user:md.name> 
     <user:md.address>AL</user:md.address> 
    </user:md> 
</user:doc> 

Мне нужно написать XSLT для извлечения этого имени пользователя. Я знаю способ, как показано ниже.

<xsl:template match="user:doc"> 
<xsl:apply-templates/> 
</xsl:template> 

<xsl:template match = "user:md"> 
<xsl:value-of select = "./user:md.name"/> 
</xsl:template> 

Но я хочу знать, могу ли я пропустить имен и непосредственно совпадают, как xsl:template match="doc">....</xsl:template>

использованием Также <xsl:template match="user:doc"> дает мне ошибку ниже.

File C:\Users\u0138039\Desktop\XML\XSLT\chapters.xsl is not valid. 
    Undefined namespace prefix 'user' 
     Error location: xsl:stylesheet/xsl:template/@match 
     Details 
      XPST0081: A namespace prefix used in an expression must be expandable into a namespace URI using the statically known namespaces 

Благодаря

ответ

0
<xsl:template match="*:doc"> 
+0

И тогда, должен ли я/я могу непосредственно взять ''? – Rakesh

+0

Nope ........... –

0

Вы можете определить

xpath-default-namespace="http://foo.bar.com/ns" 

как атрибут xsl:stylesheet. Если вы это сделаете, то match="md" интерпретируется как соответствующие элементы с локальным именем md и пространство имен URI http://foo.bar.com/ns.

+0

Привет, сэр, Как я могу получить значение 'user.md.name'? – Rakesh

+0

В вашем примере есть пользователь: md.name, а не user.md.name. Если вы используете пространство имен xpath-default-names, все имена элементов в этом пространстве имен могут быть нефиксированы, поэтому вы просто пишете 'select =" md.name ". –

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