2017-10-14 29 views
0

一部のXMLをXSLTファイルを使用してCSVファイルに変換する必要があります。 XMLコードは以下の省略形でリストされています。私が探しているCSV形式は ホスト名、generationDate、machineIdXMLからCSVへの変換

必要なCSV

DESKTOP-H3B7ONO,20171014T100948Z,3A80-071084 

の例私はXMLファイルからの3つの値を必要とし、残りは無視することができます。

<?xml version='1.0' encoding='UTF-8' ?> 
<document> 
    <properties> 
    <basic> 
     <property id="hostName"> 
     <value>DESKTOP-H3B7ONO</value> 
     </property> 
     <property id="generationDate"> 
     <value>20171014T100948Z</value> 
     </property> 
     <property id="rotationType"> 
     <value></value> 
     </property> 
     <!-- ... many properties omitted here ... --> 
     <property id="generationEpoch"> 
     <value>1507975788796</value> 
     </property> 
     <property id="machineId"> 
     <value>3A80-071084</value> 
     </property> 
     <property id="application"> 
     <value>scan</value> 
     </property> 
     <!-- ... more properties omitted ... --> 
    </basic> 
    </properties> 
</document> 

入力でのレコードは1つだけあります(basic要素が繰り返されません)。

私はあなたが近くにいる次のスタイルシート

<?xml version="1.0" encoding="Utf-8" ?> 
<xsl:stylesheet xmlns:xsl="w3.org/1999/XSL/Transform" 
       version="1.0"> 
    <xsl:output method="text" encoding="Utf-8" /> 

    <xsl:template match="basic"> 
    <xsl:for-each select="property"> 
     <xsl:value-of select="value" /> 
     <xsl:text>,</xsl:text> 
     <xsl:text></xsl:text> 
    </xsl:for-each> 
    </xsl:template> 
</xsl:stylesheet> 
+1

を試してみてください?後者の場合、興味のある3つの要素の "レコード/行"には、兄弟か、新しい "基本"親がありますか?何を試しましたか? XPathで要素を選択する方法については、XPathチュートリアルで説明しています。 –

+0

レコードが1つしかなく、基本的に3つの要素に興味があり、以下を試しました <?xml version = "1.0" encoding = "Utf-8"?> user3129787

+0

閉じる投票者への注意:私はこの質問を理解する方法を考えることができず、aqとして理解していませんヘルプセンターのスコープステートメント内のプログラミングについての熟考。説明してくれませんか?この質問は、プログラマーがよく使うツール(ここではプログラミング言語としてのXSLT)を含む特定のプログラミング上の問題を記述しており、その問題は実用的であり、答えることができます。 –

答えて

0

を試してみました。代わりに、あなたのスタイルシートでxsl:for-each

、あなたはあなたがこれらの3つの値を持つ1行が必要か、あなたはこれらの3つの要素のいくつかがあると期待していない

<xsl:value-of select="property[@id='hostName']/value"/> 
<xsl:text>,</xsl:text> 
<xsl:value-of select="property[@id='generationDate']/value"/> 
<xsl:text>,</xsl:text> 
<xsl:value-of select="property[@id='machineId']/value"/>