0

xsltを使用して特定のxmlファイルからメタデータとスキーマ情報を削除して、それらのデータをsqlテーブルにインポートできるようにしたいのですが、そのメタデータとスキーマ情報をxmlファイルから削除できませんでした。私は過去3日間から実際にたくさんのグーグルをしましたが、私はそれを実行することができません。指定されたxmlファイルからメタデータとスキーマを削除する有効なxsltファイルコードを提供してください。

ここでは、xmlファイルのコードを提供しています。

<?xml version="1.0" encoding="utf-16"?>
<DataSet>
  <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
      <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="Table">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="lukas_id_nagrody" type="xs:string" minOccurs="0" />
                <xs:element name="ilosc" type="xs:int" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:complexType>
    </xs:element>
  </xs:schema>
  <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
    <NewDataSet>
      <Table diffgr:id="Table1" msdata:rowOrder="0">
        <lukas_id_nagrody>10</lukas_id_nagrody>
        <ilosc>4</ilosc>
      </Table>
      <Table diffgr:id="Table2" msdata:rowOrder="1">
        <lukas_id_nagrody>12</lukas_id_nagrody>
        <ilosc>10</ilosc>
      </Table>
      <Table diffgr:id="Table3" msdata:rowOrder="2">
        <lukas_id_nagrody>21</lukas_id_nagrody>
        <ilosc>32</ilosc>
      </Table>
      <Table diffgr:id="Table4" msdata:rowOrder="3">
        <lukas_id_nagrody>32</lukas_id_nagrody>
        <ilosc>13</ilosc>
      </Table>
      <Table diffgr:id="Table5" msdata:rowOrder="4">
        <lukas_id_nagrody>33</lukas_id_nagrody>
        <ilosc>15</ilosc>
      </Table>
      <Table diffgr:id="Table6" msdata:rowOrder="5">
        <lukas_id_nagrody>34</lukas_id_nagrody>
        <ilosc>2</ilosc>
      </Table>
    </NewDataSet>
  </diffgr:diffgram>
</DataSet>

SSISでxmlタスクを使用しています。

上記のxmlデータを変換した後、次の出力が必要です。

<NewDataSet>
    <Table>
            <lukas_id_nagrody>34</lukas_id_nagrody>
            <ilosc>2</ilosc>
    </Table>
</NewDataSet>

このような出力が欲しいです。ありがとう。

4

1 に答える 1

1

NewDataSet属性から始めて属性を省略した、単純化された ID/コピー パターンが必要です。これを試して:

<xsl:template match="DataSet/diffgr:diffgram/NewDataSet|DataSet/diffgr:diffgram/NewDataSet//*|text()">
    <xsl:copy>
        <xsl:apply-templates select='*|text()' />
    </xsl:copy>
</xsl:template>

実行可能なデモ(出力ソースを参照)

于 2012-08-28T15:11:17.283 に答える