2017-02-22 3 views
0

ありがとうございました。あなたが送ったコードは私のためにうまくいきましたが、以下の行があるときはエラーを投げます。この行が削除されるとうまく動作します。私は以下のエラーにXSLT:<xsl:strip-space>エラー。XML出力の一部の要素を省略しました。

ホワイトスペースを取得しています。このライン<xsl:strip-space elements="*" />のために
は、すでにロードされている入力文書から取り除かすることはできません。
代わりに入力文書をXmlReaderとして入力してください。

さらに、いくつかの子ノードがありたいが、すべての子ノードが選択されていないとしたらどうなるでしょうか。例えば

<root type="object"> 
    <items type="array"> 
     <item type="object"> 
      <elem1></elem1> 
      <elem2></elem2> 
      <elem3></elem3> 
      <elem4></elem4> 
      <elem5></elem5> 
      <elem6></elem6> 
      <elem7></elem7> 
     </item> 
    </items> 
</root> 

はに変換する必要があります。

<assets> 
    <item> 
     <elem1></elem1> 
     <elem3></elem3> 
     <elem6></elem6> 
     <elem7></elem7> 
    </item> 
</assets> 
+2

質問は本当に、自己完結型でなければなりません前の質問へのリンク)。しかし、この特定のケースでは、変換を実行しているC#/ VB.Net(?)コードを表示すると、おそらく役に立ちます。ありがとうございました。 –

+0

どのコードを参照していますか? XSLTコードとは何ですか? – Roland

+0

質問の書式、スペル、および明瞭さが改善されました。私はまた、質問の内容をより適切に一致させるようにタイトルを変更しました。 – zx485

答えて

0

は、このXSLT-1.0を試してみてください。それはX€[1,3,6,7]ですべての希望のelemX要素をコピーし、他のすべてのelemY要素を削除します。
すべての空白は<xsl:strip-space>によって削除されます。

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

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

    <xsl:template match="elem1|elem3|elem6|elem7" priority="1"> 
     <xsl:copy-of select="." /> 
    </xsl:template> 

    <xsl:template match="*[starts-with(local-name(.),'elem')]" /> 

</xsl:stylesheet> 

出力は、次のとおりです。あなたはあなたも提供していない、特にため(に問題があるコードが含まれるようにあなたの質問を編集する必要がありますので、StackOverflowの中

<?xml version="1.0"?> 
<assets> 
    <item> 
     <elem1/> 
     <elem3/> 
     <elem6/> 
     <elem7/> 
    </item> 
</assets> 
関連する問題