首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有重复命名空间的IEEE LOM XML的XSL转换

具有重复命名空间的IEEE LOM XML的XSL转换
EN

Stack Overflow用户
提问于 2016-09-14 16:14:22
回答 1查看 103关注 0票数 0

我正在尝试使用lom的重复内联命名空间声明来转换XML文档。该文件除其他外包括以下内容:

代码语言:javascript
复制
 <metadata>
   <schema>http://ltsc.ieee.org/xsd/LOM/imslode/ilox/any/rights</schema>
   <lom xmlns="http://ltsc.ieee.org/xsd/LOM/imslode/ilox/any/rights" xsi:schemaLocation="http://ltsc.ieee.org/xsd/LOM/imslode/ilox/any/rights http://www.imsglobal.org/profile/lode/lodev1p0/lodev1p0_ilox_any_rights_lom_v1p0.xsd">
      <rights>
         <cost>
            <source>costValues</source>
            <value>no</value>
         </cost>
         <copyrightAndOtherRestrictions>
            <source>copyrightAndOtherRestrictionsValues</source>
            <value>yes</value>
         </copyrightAndOtherRestrictions>
         <description>
            <string language="x-t-cc-url">Licence text goes gere</string>
         </description>
      </rights>
   </lom>
</metadata>

 <metadata>
   <schema>http://ltsc.ieee.org/xsd/LOM</schema>
   <lom xmlns="http://ltsc.ieee.org/xsd/LOM" xsi:schemaLocation="http://ltsc.ieee.org/xsd/LOM http://ltsc.ieee.org/xsd/lomv1.0/lomLoose.xsd">
      <general>
         <title>
            <string language="es">Title goes here</string>
         </title>
         <description>
            <string language="es">Description goes here</string>
         </description>
         <keyword>
            <string language="en">a_nice_keyword</string>
         </keyword>
      </general>    
   </lom>
</metadata>

我们看到洛美被定义了两次。

在我的XSLT文件中,当我使用以下名称空间声明时:

代码语言:javascript
复制
xmlns:lom="http://ltsc.ieee.org/xsd/LOM/imslode/ilox/any/rights"

我设法使用标识符解析第一部分的元素,如下所示。

代码语言:javascript
复制
lom:rights/lom:cost/lom:value

当我使用以下名称空间声明时,第二种情况也是如此

代码语言:javascript
复制
xmlns:lom="http://ltsc.ieee.org/xsd/LOM"

具有标识符,例如:

代码语言:javascript
复制
lom:general/lom:description/lom:string

我似乎不能同时解析/转换两者。

有办法绕道吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-14 16:32:28

使用两个具有不同前缀的名称空间声明-例如:

代码语言:javascript
复制
xmlns:lom="http://ltsc.ieee.org/xsd/LOM/imslode/ilox/any/rights"
xmlns:lom2="http://ltsc.ieee.org/xsd/LOM"

然后您可以使用这样的路径:

代码语言:javascript
复制
metadata[1]/lom:lom/lom:rights/lom:cost/lom:value

在第一个分支中选择元素,并:

代码语言:javascript
复制
metadata[2]/lom2:lom/lom2:general/lom2:description/lom2:string

若要在另一个分支中选择元素,请执行以下操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39495209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档