我正在尝试使用lom的重复内联命名空间声明来转换XML文档。该文件除其他外包括以下内容:
<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文件中,当我使用以下名称空间声明时:
xmlns:lom="http://ltsc.ieee.org/xsd/LOM/imslode/ilox/any/rights"我设法使用标识符解析第一部分的元素,如下所示。
lom:rights/lom:cost/lom:value当我使用以下名称空间声明时,第二种情况也是如此
xmlns:lom="http://ltsc.ieee.org/xsd/LOM"具有标识符,例如:
lom:general/lom:description/lom:string我似乎不能同时解析/转换两者。
有办法绕道吗?
发布于 2016-09-14 16:32:28
使用两个具有不同前缀的名称空间声明-例如:
xmlns:lom="http://ltsc.ieee.org/xsd/LOM/imslode/ilox/any/rights"
xmlns:lom2="http://ltsc.ieee.org/xsd/LOM"然后您可以使用这样的路径:
metadata[1]/lom:lom/lom:rights/lom:cost/lom:value在第一个分支中选择元素,并:
metadata[2]/lom2:lom/lom2:general/lom2:description/lom2:string若要在另一个分支中选择元素,请执行以下操作。
https://stackoverflow.com/questions/39495209
复制相似问题