0

私はxmlを持っています

<?xml version="1.0"?>
    <ArrayOfSubscriber xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <Subscriber>
        <FirstName xsi:nil="true" xmlns="somenamespace" />
        <LastName xsi:nil="true" xmlns="somenamespace" />
        ...
      </Subscriber>
...
</ArrayOfSubscriber>

各列に独自のスタイルを持つExcelファイルを作成する必要があります。次の変換を使用して、期待したものを取得したいと思いました

<Worksheet>
  <Table>
    <xsl:apply-templates select="//Subscriber" />
  </Table>
</Worksheet>

<xsl:template match="Subscriber">
  <Row ss:Height="15">
    <Cell ss:StyleID="s21">
      <Data ss:Type="String">
        <xsl:value-of select="FirstName" />
      </Data>
    </Cell>
    <Cell ss:StyleID="s22">
      <Data ss:Type="String">
        <xsl:value-of select="LastName " />
      </Data>
    </Cell>
    ...
   </Row>
</xsl:template>

しかし、名前空間が原因で問題が発生しますxmlns="somenamespace"。したがって、データを取得できません。それらを削除する可能性が説明されているトピックをいくつか見つけましたが、xsltを初めて使用する限り、タスクに適切なテンプレートを適用することに成功しませんでした。

4

1 に答える 1

1

これに似た構成を使用して、以前にリンクした投稿の代替案を試してください。

<xsl:value-of select="*[local-name()='FirstName' = and namespace-uri()='somenamespace']" />

名前空間を親要素として定義することを以前に提案しました:

<parent xmlns:sn="somenamespace">
...
<xsl:template match="Subscriber">
  <Row ss:Height="15">
    <Cell ss:StyleID="s21">
      <Data ss:Type="String">
        <xsl:value-of select="sn:FirstName" />
      </Data>
    </Cell>
    <Cell ss:StyleID="s22">
      <Data ss:Type="String">
        <xsl:value-of select="sn:LastName " />
      </Data>
    </Cell>
    ...
   </Row>
</xsl:template>
...
</parent>
于 2012-11-20T13:09:11.490 に答える