1

XSL で XML からデータを取得して Excel にプッシュしようとしています。Excel シートでセルを生成して入力することはできますが、XML ドキュメントからデータを取得することはできません。

以下の例では、必要なのは@datefromPLMXML要素だけです。

XML:

<?xml version="1.0" encoding="UTF-8"?>
 <PLMXML xmlns="http://www.plmxml.org/Schemas/PLMXMLSchema" schemaVersion="6" language="en-us" date="2013-06-11" time="11:47:25" author="XXXXXXXXX">

   <Header id="id1" traverseRootRefs="#id2 #id8 #id36 #id38 #id41 #id43 #id40 #id48 #id50 #id47 #id55 #id57 #id54 #id62 #id64 #id61 #id68 #id84 #id93 #id98 #id118" transferContext="xXXXXxx" />

   <ProductRevision id="id2" name="XXXXXXX &amp; XXXXXXXXX" accessRefs="#id3" subType="XXXXXXXXXX" masterRef="#id6" revision="03">
      <ApplicationRef version="h0BAw48K4MeaHA" application="XXXXXXXX" label="gOGAwodW4MeaHA" />
   </ProductRevision>

   <Product id="id6" name="XXXXXXXXX &amp; XXXXXXXX" accessRefs="#id3" subType="XXXXXXX" productId="XXXXXXXX">
      <ApplicationRef version="gOGAwodW4MeaHA" application="XXXXXXXX" label="gOGAwodW4MeaHA" />
   </Product>

   <AccessIntent id="id3" intent="reference" ownerRefs="#id4" />

   <Site id="id4" name="XXX" siteId="-2093050256">
      <ApplicationRef version="wxPAAAAE4MeaHA" application="XXXXXXXX" label="wxPAAAAE4MeaHA" />
      <UserData id="id5">
         <UserValue value="1" title="xxxx" />
      </UserData>
   </Site>
</PLMXML>

XSL ファイル:

<?xml version="1.0" encoding="utf-8" ?>

 <xsl:stylesheet version="1.0"
       xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
       xmlns:plm="http://www.plmxml.org/Schemas/PLMXMLSchema"
       xmlns="urn:schemas-microsoft-com:office:spreadsheet"
       xmlns:o="urn:schemas-microsoft-com:office:office"
       xmlns:x="urn:schemas-microsoft-com:office:excel"
       xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
       xmlns:html="http://www.w3.org/TR/REC-html40" >


<xsl:param name="report_date" select="/plm:PLMXML/@date" />

<!-- Method for translation -->
<xsl:output method="xml" version="1.0" indent="yes" />

<xsl:strip-space elements="*"/>

<!-- ******************** -->
<!-- Header and structure -->
<!-- ******************** -->
<xsl:template name="BOMReportHeader">
<xsl:processing-instruction name="mso-application">progid="Excel.Sheet"</xsl:processing-instruction>

<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
    xmlns:o="urn:schemas-microsoft-com:office:office"
    xmlns:x="urn:schemas-microsoft-com:office:excel"
    xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
    xmlns:html="http://www.w3.org/TR/REC-html40">

  <Styles>
    <Style ss:ID="heading1">
      <Font ss:Color="#000000" ss:Size="20" ss:FontName="Arial" ss:Bold="1"/>
      <Interior ss:Color="#C0C0C0" ss:Pattern="Solid"/>
    </Style>
    <Style ss:ID="heading2">
      <Font ss:Color="#000000" ss:Size="12" ss:FontName="Arial" ss:Bold="1"/>
      <Interior ss:Color="#C0C0C0" ss:Pattern="Solid"/>
    </Style>
    <Style ss:ID="heading3">
      <Alignment ss:Horizontal="Left"/>
      <Font ss:Color="#000000" ss:Size="10" ss:FontName="Arial" ss:Bold="1"/>
      <Interior ss:Color="#CCCCFF" ss:Pattern="Solid"/>
    </Style>
    <Style ss:ID="cell_data">
      <Font ss:Color="#000000"/>
      <Interior ss:Color="#FFFFCC" ss:Pattern="Solid"/>
    </Style>
  </Styles>

  <Worksheet ss:Name="Sheet1">

    <Table>
      <Column ss:AutoFitWidth="0" ss:Width="80" AutoFitWidth="1"/>
      <Column ss:AutoFitWidth="0" ss:Width="80" AutoFitWidth="1"/>
      <Column ss:AutoFitWidth="0" ss:Width="60" AutoFitWidth="1"/>
      <Column ss:AutoFitWidth="0" ss:Width="60" AutoFitWidth="1"/>
      <Column ss:AutoFitWidth="0" ss:Width="80" AutoFitWidth="1"/>
      <Column ss:AutoFitWidth="0" ss:Width="100" AutoFitWidth="1"/>
      <Column ss:AutoFitWidth="0" ss:Width="100" AutoFitWidth="1"/>
      <Column ss:AutoFitWidth="0" ss:Width="80" AutoFitWidth="1"/>
      <Column ss:AutoFitWidth="0" ss:Width="80" AutoFitWidth="1"/>
      <Column ss:AutoFitWidth="0" ss:Width="80" AutoFitWidth="1"/>
      <Column ss:AutoFitWidth="0" ss:Width="80" AutoFitWidth="1"/>
      <Column ss:AutoFitWidth="0" ss:Width="80" AutoFitWidth="1"/>
      <Column ss:AutoFitWidth="0" ss:Width="80" AutoFitWidth="1"/>

      <Row></Row>
      <Row>
        <Cell ss:StyleID="heading1">
          <Data ss:Type="String">
          </Data>
        </Cell>
        <Cell ss:StyleID="heading1"></Cell>
      </Row>
      <Row></Row>
      <Row>
        <Cell ss:StyleID="heading2">
          <Data ss:Type="String">
            Date: <xsl:value-of select="$report_date"/>
          </Data>
        </Cell>
        <Cell ss:StyleID="heading2"></Cell>
      </Row>
      <Row></Row>

    </Table>
   </Worksheet>
  </Workbook>

 </xsl:template>


 <!-- **************** Top Level data element **************** -->
 <xsl:template match="/">
   <xsl:call-template name="BOMReportHeader">
   </xsl:call-template>
 </xsl:template>

</xsl:stylesheet>

名前空間の一部を削除するなど、他の多くの方法を試みましたが、役に立たないようです。私は運が悪いので、過去2日間これに取り組んできました。

4

0 に答える 0