0

次のようなスタイルシートを使用して XML を変換しようとしています。

     <m10:RESPONSE_DETAIL> 
        <m10:LINE_NO>001</m10:LINE_NO> 
        <m10:APPR_ITEM_AMT>00000109</m10:APPR_ITEM_AMT> 
        <m10:APPR_ITEM_TAX>00000009</m10:APPR_ITEM_TAX> 
        <m10:TAX_FLAG>N</m10:TAX_FLAG> 
     </m10:RESPONSE_DETAIL> 
     <m10:RESPONSE_DETAIL> 
        <m10:LINE_NO>002</m10:LINE_NO> 
        <m10:APPR_ITEM_AMT>00000109</m10:APPR_ITEM_AMT> 
        <m10:APPR_ITEM_TAX>00000009</m10:APPR_ITEM_TAX> 
        <m10:TAX_FLAG>N</m10:TAX_FLAG> 
     </m10:RESPONSE_DETAIL> 
     <m10:RESPONSE_DETAIL> 
        <m10:LINE_NO>003</m10:LINE_NO> 
        <m10:APPR_ITEM_AMT>00000100</m10:APPR_ITEM_AMT> 
        <m10:APPR_ITEM_TAX>00000000</m10:APPR_ITEM_TAX> 
        <m10:TAX_FLAG>N</m10:TAX_FLAG> 
     </m10:RESPONSE_DETAIL> 

これに:

     <m10:RESPONSE_DETAIL> 
        <m10:LINE_NO>001</m10:LINE_NO> 
        <m10:APPR_ITEM_AMT>109</m10:APPR_ITEM_AMT> 
        <m10:APPR_ITEM_TAX>9</m10:APPR_ITEM_TAX> 
        <m10:TAX_FLAG>N</m10:TAX_FLAG> 
        <m10:LINE_NO>002</m10:LINE_NO> 
        <m10:APPR_ITEM_AMT>109</m10:APPR_ITEM_AMT> 
        <m10:APPR_ITEM_TAX>9</m10:APPR_ITEM_TAX> 
        <m10:TAX_FLAG>N</m10:TAX_FLAG> 
        <m10:LINE_NO>003</m10:LINE_NO> 
        <m10:APPR_ITEM_AMT>100</m10:APPR_ITEM_AMT> 
        <m10:APPR_ITEM_TAX>0</m10:APPR_ITEM_TAX> 
        <m10:TAX_FLAG>N</m10:TAX_FLAG> 
     </m10:RESPONSE_DETAIL>

私は xslt にあまり強くないので、これは基本的なことかもしれませんが、これまでに試したことはすべて次のようになります。

     <m10:RESPONSE_DETAIL> 
        <m10:LINE_NO>001</m10:LINE_NO> 
        <m10:LINE_NO>002</m10:LINE_NO> 
        <m10:LINE_NO>003</m10:LINE_NO> 
        <m10:APPR_ITEM_AMT>109</m10:APPR_ITEM_AMT> 
        <m10:APPR_ITEM_AMT>109</m10:APPR_ITEM_AMT> 
        <m10:APPR_ITEM_AMT>100</m10:APPR_ITEM_AMT> 
        <m10:APPR_ITEM_TAX>9</m10:APPR_ITEM_TAX> 
        <m10:APPR_ITEM_TAX>9</m10:APPR_ITEM_TAX> 
        <m10:APPR_ITEM_TAX>0</m10:APPR_ITEM_TAX> 
        <m10:TAX_FLAG>N</m10:TAX_FLAG> 
        <m10:TAX_FLAG>N</m10:TAX_FLAG> 
        <m10:TAX_FLAG>N</m10:TAX_FLAG> 
     </m10:RESPONSE_DETAIL> 

どんな提案も本当に感謝しています...

前もって感謝します

4

2 に答える 2

0

このXSLT1.0スタイルシート..。

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:m10="m10">
<xsl:output method="xml" indent="yes"/>

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

<xsl:template match="m10:RESPONSE_DETAIL[1]">
  <xsl:copy>
   <xsl:apply-templates select="@*" /> 
   <xsl:apply-templates select="../m10:RESPONSE_DETAIL/*" /> 
  </xsl:copy>    
</xsl:template>

<xsl:template match="m10:RESPONSE_DETAIL" />

</xsl:stylesheet>

...この入力ドキュメントを変換します

<root xmlns:m10="m10" > 
<m10:RESPONSE_DETAIL> 
        <m10:LINE_NO>001</m10:LINE_NO> 
        <m10:APPR_ITEM_AMT>00000109</m10:APPR_ITEM_AMT> 
        <m10:APPR_ITEM_TAX>00000009</m10:APPR_ITEM_TAX> 
        <m10:TAX_FLAG>N</m10:TAX_FLAG> 
     </m10:RESPONSE_DETAIL> 
     <m10:RESPONSE_DETAIL> 
        <m10:LINE_NO>002</m10:LINE_NO> 
        <m10:APPR_ITEM_AMT>00000109</m10:APPR_ITEM_AMT> 
        <m10:APPR_ITEM_TAX>00000009</m10:APPR_ITEM_TAX> 
        <m10:TAX_FLAG>N</m10:TAX_FLAG> 
     </m10:RESPONSE_DETAIL> 
     <m10:RESPONSE_DETAIL> 
        <m10:LINE_NO>003</m10:LINE_NO> 
        <m10:APPR_ITEM_AMT>00000100</m10:APPR_ITEM_AMT> 
        <m10:APPR_ITEM_TAX>00000000</m10:APPR_ITEM_TAX> 
        <m10:TAX_FLAG>N</m10:TAX_FLAG> 
</m10:RESPONSE_DETAIL>
</root>

要求に応じ。

于 2012-06-20T16:34:16.027 に答える
0

投稿した例は有効な Xml ドキュメントではありません。変換したいものには複数のルート要素があり、m10 プレフィックスがバインドされている名前空間も表示されません。

恒等変換を使用して、目的を達成できます。入力ドキュメントを修正して、xslt を記述できるようにしました。私の入力ドキュメントは次のようになります。

<root xmlns:m10="m10">
     <m10:RESPONSE_DETAIL>  
        <m10:LINE_NO>001</m10:LINE_NO>  
        <m10:APPR_ITEM_AMT>00000109</m10:APPR_ITEM_AMT>  
        <m10:APPR_ITEM_TAX>00000009</m10:APPR_ITEM_TAX>  
        <m10:TAX_FLAG>N</m10:TAX_FLAG>  
     </m10:RESPONSE_DETAIL>  
     <m10:RESPONSE_DETAIL>  
        <m10:LINE_NO>002</m10:LINE_NO>  
        <m10:APPR_ITEM_AMT>00000109</m10:APPR_ITEM_AMT>  
        <m10:APPR_ITEM_TAX>00000009</m10:APPR_ITEM_TAX>  
        <m10:TAX_FLAG>N</m10:TAX_FLAG>  
     </m10:RESPONSE_DETAIL>  
     <m10:RESPONSE_DETAIL>  
        <m10:LINE_NO>003</m10:LINE_NO>  
        <m10:APPR_ITEM_AMT>00000100</m10:APPR_ITEM_AMT>  
        <m10:APPR_ITEM_TAX>00000000</m10:APPR_ITEM_TAX>  
        <m10:TAX_FLAG>N</m10:TAX_FLAG>  
     </m10:RESPONSE_DETAIL>
</root>

次のスタイルシートを作成しました。

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:m10="m10">
    <xsl:output method="xml" indent="yes"/>


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

  <xsl:template match="root">
    <m10:RESPONSE_DETAIL>
      <xsl:apply-templates />
    </m10:RESPONSE_DETAIL>
  </xsl:template>

  <xsl:template match="m10:RESPONSE_DETAIL">
    <xsl:apply-templates select="*"/>
  </xsl:template>
</xsl:stylesheet>

入力ドキュメントを次のように変換します。

<?xml version="1.0" encoding="utf-8"?>
<m10:RESPONSE_DETAIL xmlns:m10="m10" xmlns:msxsl="urn:schemas-microsoft-com:xslt">
     <m10:LINE_NO>001</m10:LINE_NO><m10:APPR_ITEM_AMT>00000109</m10:APPR_ITEM_AMT><m10:APPR_ITEM_TAX>00000009</m10:APPR_ITEM_TAX><m10:TAX_FLAG>N</m10:TAX_FLAG>  
     <m10:LINE_NO>002</m10:LINE_NO><m10:APPR_ITEM_AMT>00000109</m10:APPR_ITEM_AMT><m10:APPR_ITEM_TAX>00000009</m10:APPR_ITEM_TAX><m10:TAX_FLAG>N</m10:TAX_FLAG>  
     <m10:LINE_NO>003</m10:LINE_NO><m10:APPR_ITEM_AMT>00000100</m10:APPR_ITEM_AMT><m10:APPR_ITEM_TAX>00000000</m10:APPR_ITEM_TAX><m10:TAX_FLAG>N</m10:TAX_FLAG>
</m10:RESPONSE_DETAIL>
于 2012-06-20T16:12:47.733 に答える