0

私はXSLTを初めて使用し、あるXMLファイルを別のXMLファイルに変換しようとしています。私の問題は、元のxmlファイルにプレフィックスのない名前空間'xmlns'が1つあり、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> 
4

1 に答える 1

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"/>
于 2012-07-06T08:11:50.043 に答える