0

2つのXMLをインポートしてデータを結合するXSLからクリーンなXMLを出力する方法を理解する上で、いくつかの大きな問題が発生しました。

私は自分の解決策だと思う情報をもっと見つけようとして<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>いましたが、すべてを1つのソリッドxmlファイルにまとめる方法がわかりません。サーバースクリプトから呼び出すと、見栄えはしますが、HTMLタグやその他の不要なものがいくつかあります。これは、まだXSLであるためだと思います。

これは私のコードです:

<?xml version="1.0" encoding="UTF-8" ?>  
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">

  <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

  <xsl:param name="source-producenter" select="'Producers.xml'"/>
  <xsl:param name="source-positioner" select="'positioner.xml'"/>
  <xsl:variable name="producenter" select="document($source-producenter)"/>
  <xsl:variable name="Workbook" select="document($source-positioner)"/>

  <xsl:template match="/">
    <Producers>
      <xsl:for-each select="$producenter//producer">
        <producer>

          <id>
            <xsl:value-of select="id"/>
          </id>

          <name>
            <xsl:value-of select="name"/>
          </name>

          <address><xsl:value-of select="address"/></address>

          <postalcode>
            <xsl:value-of select="postalcode"/>
          </postalcode>

          <city>
            <xsl:value-of select="city"/>
          </city>

          <site>
            <xsl:value-of select="site"/>
          </site>

          <pic>
            <xsl:value-of select="img"/>
          </pic>
          <!--Store id from producent into storeId xsl variable -->
          <xsl:variable name="storedId" select="id"/>
          <!--Using filter to get correct Cells for latitude and longitude and checks if text() in number is equal to our storedId variable-->
          <xsl:variable name="selected"
            select="$Workbook//ss:Cell[@ss:Index='2']/ss:Data[@ss:Type='Number' and text() = $storedId]"/>
          <!--Gets the filtered values-->
          <latitude>
            <xsl:value-of select="$selected//../../ss:Cell[2]/ss:Data"/>
          </latitude>
          <longitude>
            <xsl:value-of select="$selected//../../ss:Cell[3]/ss:Data"/>
          </longitude>
        </producer>
      </xsl:for-each>
    </Producers>
  </xsl:template>
</xsl:stylesheet>

私はすべての答えに感謝します、事前にありがとう!

4

1 に答える 1

0

MSExcel によって生成された XML を変換する場合 (いくつかの要素の ss: プレフィックスが手がかりです)、Excel が @ss:Index 属性を使用する方法に注意してください。連続するセルはこの属性を省略しますが、間にある空白のセルをスキップするために、後続のセルには @ss:index があります。部分的に満たされたセルのマトリックスのジオメトリを再構築するのはかなり面倒です。これがあなたの挑戦と関係があるかどうかはよくわかりません。

于 2012-11-26T00:05:38.783 に答える