0

XSLT を使用して、ある XML から別の XML に変換する必要があります。2 つの新しいノードを追加<file href="new1.js">し、タグ<file href="new2.js">内のどこにでも属性を追加する必要があります。<resource>

私の入力ファイル:

<?xml version="1.0" encoding="UTF-8"?>
            <manifest identifier="eXescorm_quiz4823c6301f3d3afc1c1f" 
            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"> 

    <resources>
         <resource identifier="RES22" type="webcontent" href="index.html"> 
                 <file href="index.html"/>
                 <file href="common.js"/>
         </resource>
    </resources>
</manifest>

望ましい出力:

<?xml version="1.0" encoding="UTF-8"?>
    <manifest xmlns="http://www.imsglobal.org/xsd/imscp_v1p1" 
              identifier="eXeorm_sample4823c6301f29a89a4c1f" 
              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">

    <resources>
         <resource identifier="RES22" type="webcontent" href="index.html">
                 <file href="index.html"/>                                    
                 <file href="common.js"/>
                 <file href="new1.js"/>
                 <file href="new2.js"/>
         </resource>
    </resources>   
</manifest>

私のXSLT:

      <xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:xhtml="http://www.imsglobal.org/xsd/imscp_v1p1"
                xmlns="http://www.imsglobal.org/xsd/imscp_v1p1"
                exclude-result-prefixes="xhtml">
                <xsl:output method="html" indent="yes" encoding="UTF-8"/>
                <xsl:strip-space elements="*" />

        <xsl:template match="@*|node()">
         <xsl:copy>
          <xsl:apply-templates select="@*|node()"/>
         </xsl:copy>
        </xsl:template>

    <xsl:template match="xhtml:resource">
     <file href="new1.js"/>
    <file href="new2.js"/>
     <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
     </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

ただし、新しいファイル ノードは追加されません。ありがとう!

4

1 に答える 1

1
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:ims="http://www.imsglobal.org/xsd/imscp_v1p1"
  exclude-result-prefixes="xsl ims">
<xsl:output method="xml" indent="yes" />
<xsl:strip-space elements="*" />

<xsl:template match="@*|node()">
 <xsl:copy>
  <xsl:apply-templates select="@*|node()"/>
 </xsl:copy>
</xsl:template>

<xsl:template match="ims:resource" xmlns="http://www.imsglobal.org/xsd/imscp_v1p1">
 <xsl:copy>
  <xsl:apply-templates select="@*|node()"/>
  <file href="new1.js"/>
  <file href="new2.js"/>   
 </xsl:copy>
</xsl:template>

</xsl:stylesheet>
于 2012-08-10T01:40:40.743 に答える