2017-06-27 5 views
0

私は を作成しようとしていたファイルの1つに、XSLT を混同しています。XSLTを使用して複数のタグの複数の値に基づいてレコードを結合する

私はこのタイプの出力をしたい:

EmpID|Languages|LanguageAbility|LanguagePro|Certificate-Issuer|Certification|Certificate-ID 
000626390|English|Overall||C1|C2| 

000626390|Turkish|Overall|||| 

XML:あなたのサンプルXMLが含まれていませんのでこれは私のコード

<wd:Report_Data xmlns:wd="urn:com.workday.report/Languages"> 
       <wd:Report_Entry> 
        <wd:EmpID>000626390</wd:EmpID> 
        <wd:Languages> 
         <wd:Languages>English</wd:Languages> 
         <wd:LanguageAbility>Overall</wd:LanguageAbility> 
        </wd:Languages> 
        <wd:Languages> 
         <wd:Languages>Turkish</wd:Languages> 
         <wd:LanguageAbility>Overall</wd:LanguageAbility> 
        </wd:Languages> 
        <wd:Certifications>    
         <wd:Certificate-Issuer>C1</wd:Certificate-Issuer> 
         <wd:Certification>C2</wd:Certification> 
        </wd:Certifications> 
       </wd:Report_Entry> 
      </wd:Report_Data> 
+0

の可能性のある重複[XSLT-にコンバートダイナミックXMLからCSV-と-XML-ノード-ARE-未完全-repetati](HTTPS:/ /stackoverflow.com/questions/42534968/xslt-to-convert-dynamic-xml-to-csv-and-the-xml-nodes-are-not-completely-repetati/42536209#42536209) – Rupesh

答えて

0

用のサンプルXMLでありますどんなLanguageProとCertficate-IDでも、言語の兄弟であると仮定します。

XSLT 2.0

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:wd="urn:com.workday.report/Languages" 
    version="2.0"> 
    <xsl:template match="wd:Report_Entry"> 
     <xsl:for-each select="wd:Languages"> 
      <xsl:variable name="position" select="position()"/> 
      <xsl:if test="position() != 1"><xsl:text>&#xa;</xsl:text></xsl:if> 
      <xsl:value-of select="parent::wd:Report_Entry/wd:EmpID 
       |wd:Languages 
       |wd:LanguageAbility 
       " separator="|"></xsl:value-of> 
      <xsl:text>|</xsl:text> 
      <xsl:value-of select="parent::wd:Report_Entry/LanguagePro"/> 
      <xsl:text>|</xsl:text> 
      <xsl:value-of select="parent::wd:Report_Entry/wd:Certifications[$position]/wd:Certificate-Issuer"/> 
      <xsl:text>|</xsl:text> 
      <xsl:value-of select="parent::wd:Report_Entry/wd:Certifications[$position]/wd:Certification"/> 
      <xsl:text>|</xsl:text> 
      <xsl:value-of select="parent::wd:Report_Entry/Certificate-ID"/> 
     </xsl:for-each> 
    </xsl:template> 
</xsl:stylesheet> 
関連する問題