我是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>
My Modified 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>
答案 0 :(得分:1)
此页面顶部有一个搜索框:输入“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"/>