-2

問題があります。xslt 変換を使用して xml から html を取得しようとすると、html を含む xml 部分は次のようになります。

`<DataContent><media media-type="image" style="leftSide"><media-reference data-location="#photo0" mime-type=""/></media><p>p1</p><p>p2</p><p>p3</p></DataContent>
</ContentItem>`

しかし、htmlページでは結果は次のとおりです。

p1p2p3 //テキストのみ、

私のxsltコードは次のとおりです。

<xslt:valueof select="ContentItem/DataContent"/>

誰でも私を助けることができますか?

4

1 に答える 1

1

私はあなたが探しているものを知っていると思います。支援の精神で、以下に解決策といくつかの説明を示します。XSLT に関する優れた本を手に取り、基本を一から学ぶことを強くお勧めします。


この XSLT の場合:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output omit-xml-declaration="yes" indent="yes"/>
  <xsl:strip-space elements="*"/>

  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="ContentItem">
    <xsl:apply-templates select="DataContent/*"/>
  </xsl:template>

</xsl:stylesheet>

...元の XML に適用されます (整形式になるように修正されます):

<ContentItem>
  <DataContent>
    <media media-type="image" style="leftSide">
      <media-reference data-location="#photo0" mime-type=""/>
    </media>
    <p>p1</p>
    <p>p2</p>
    <p>p3</p>
  </DataContent>
</ContentItem>

...必要な結果は(私が思うに)生成されます:

<media media-type="image" style="leftSide">
  <media-reference data-location="#photo0" mime-type=""/>
</media>
<p>p1</p>
<p>p2</p>
<p>p3</p>

<xsl:value-of>定義により、選択したノード/属性の文字列値を返すため、ソリューションはテキストを出力しています。

于 2013-09-09T18:08:13.493 に答える