如何在XS中访问“其他”命名空间的元素

时间:2012-07-27 20:16:31

标签: xslt xslt-2.0

示例架构:

<xs:complexType name="ClassTest">
    <xs:element name="Name" type="xs:string" />
 <xs:element name="Class" type="xs:string" />
 <xs:any namespace="##other" processContents="lax"maxOccurs="Unbound" />

示例XML:

<ClassTestxmlns="http://schooltest.com">
 <Name>AAA</Name>
 <Class>3</Class>
 <ns:maths>33</ns:maths>
 <ps:english>44<ps:english>
</ClassTest>

如何将具有不同命名空间的数学和英语元素引用到目标命名空间?

感谢。

2 个答案:

答案 0 :(得分:2)

由于您的问题被标记为XSLT 2.0,您还可以考虑使用通配符,例如*:maths*:english,分别在任何命名空间中选择本地名称为maths {@ 1}}的元素。

答案 1 :(得分:0)

  

如何引用具有不同的数学和英语元素   命名空间到目标命名空间。

由于事先并未知道此类元素的命名空间和名称,因此只选择它们而不使用任何特定名称或命名空间

/x:ClassTest/*[not(self::x:Name or self::x:Class)]

前缀"x:"必须绑定到命名空间"http://schooltest.com"

此表达式选择作为顶部元素x:ClassTest的子元素的任何元素,而不是元素x:Namex:Class之一。应用于提供的XML文档时,它会同时选择ns:mathsps:english元素。