繁体   English   中英

XSLT和Java:默认命名空间XMLNS

[英]XSLT and Java: Default Namespace XMLNS

我是XSLT的新手,正在尝试将一个XML文件转换为另一个XML文件。 我的问题是,原始xml文件中存在一个没有任何前缀的名称空间“ xmlns”,当我通过xslt将其转换为另一个名称空间时,什么也没有发生,但是如果我删除该xmlns名称空间,那么它就可以工作了,但实际上我无法修改原始名称空间.xml文件,因为我只能使用该文件,所以我必须将xmlns保留在原始文件中。 所以任何人都可以在我的.xsl或Java代码中提出一些修改建议,以解决此问题。

我的原始XML名称空间看起来像-

<?xml version="1.0" encoding="UTF-8"?>
        <manifest identifier="eXeorm_sample4823c6301f29a89a4c1f"
        xmlns:ims="http://www.imsglobal.org/xsd/imscp_v1p1"
        xmlns="http://www.imsglobal.org/xsd/imscp_v1p1"
        xmlns:adlcp="http://www.adlnet.org/xsd/adlcp_rootv1p2" 
        xmlns:imsmd="http://www.imsglobal.org/xsd/imsmd_v1p2" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"      
</manifest>

我想要的xml是:

 <?xml version="1.0" encoding="UTF-8"?>
        <manifest identifier="eXescorm_quiz4823c6301f29a8419515" 
            xmlns="http://www.imsproject.org/xsd/imscp_rootv1p1p2" 
            xmlns:adlcp="http://www.adlnet.org/xsd/adlcp_rootv1p2" 
            xmlns:imsmd="http://www.imsglobal.org/xsd/imsmd_v1p2" 
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        </manifest>

我修改的XSLT-

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.imsproject.org/xsd/imscp_rootv1p1p2"
xmlns:ims="http://www.imsglobal.org/xsd/imscp_v1p1" 
xmlns:adlcp="http://www.adlnet.org/xsd/adlcp_rootv1p2" 
xmlns:imsmd="http://www.imsglobal.org/xsd/imsmd_v1p2" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 
<xsl:template match="ims:manifest">   
</xsl:stylesheet> 

此页面顶部有一个搜索框:键入“ XSLT默认名称空间”,您将找到该问题的数百个答案。

顺便说一句,您的代码非常冗长。 代替这个:

<xsl:element name="item">
    <xsl:attribute name="identifier">ITEM-eXeorm_sample4823c6301f29a89a4d27</xsl:attribute>
    <xsl:attribute name="isvisible">true</xsl:attribute>
    <xsl:attribute name="identifierref">RES-eXeorm_sample4823c6301f29a89a4d28</xsl:attribute>
</xsl:element>

用这个:

<item identifier="ITEM-eXeorm_sample4823c6301f29a89a4d27" invisible="true"
      identifierref="RES-eXeorm_sample4823c6301f29a89a4d28"/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM