0

XSL で、各 PRODUCT/PRODUCT_IMAGES ノードの最初の ITEM ノードから最初の PRODUCT_IMAGE_FILE ノードのみを、メモ帳にある単純なリストに出力するようにします。私はこれを機能させようとしてきましたが、難しいです。

これは私が確認する必要があるものです。終了結果:

hello/this_d_one1.jpg
hello/this_d_one33.jpg

XML:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="test.xsl" type="text/xsl"?>
<products>
 <product>
  <Person>Jim</Person>
  <Product_Images>
    <item>
      <Product_Image_File>hello/this_d_one1.jpg</Product_Image_File>
    </item>
    <item>
      <Product_Image_File>hello/testNOTHISONE.jpg</Product_Image_File>
    </item>
  </Product_Images>
 </product>
 <product>
  <Person>Nancy</Person>
  <Product_Images>
    <item>
      <Product_Image_File>hello/this_d_one33.jpg</Product_Image_File>
    </item>
    <item>
      <Product_Image_File>hello/testNOTHISONE3.jpg</Product_Image_File>
    </item>
  </Product_Images>
 </product>
</products>

ここに私のtest.XSLがあります:

 <xsl:stylesheet version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

   <xsl:output method="text"/>

   <xsl:template match="products">
      <xsl:call-template name="header" />
      <xsl:apply-templates select="product" />
   </xsl:template>

   <xsl:template name="header">
      <xsl:for-each select="//product[1]/product_images/item/child::*" >
         <xsl:value-of select="name()" />
         <xsl:if test="following-sibling::*">|</xsl:if>
      </xsl:for-each>
      <xsl:text>
</xsl:text>
   </xsl:template>

   <xsl:template match="product/product_images/item">
      <xsl:for-each select="child::*" >
         <xsl:value-of select="." />
         <xsl:if test="following-sibling::*">|</xsl:if>
      </xsl:for-each>
      <xsl:text>
</xsl:text>
   </xsl:template>

</xsl:stylesheet>
4

1 に答える 1