私はXSLTの新機能ですので、これは本当にシンプルですが、私はそれを得ることができません。私は単純なxmlに出力されたレポートをパイプで区切られたファイルに変換しようとしています。 for-eachの中から呼び出されたテンプレートの中からwd:SSNにアクセスする方法を理解できません。レポートからのxml出力は次のようになります。for-each内から呼び出されたテンプレート内のノードへのアクセス
<wd:Report_Data xmlns:wd="urn:com.workday.report/Report_ABC">
<wd:Report_Entry>
<wd:Company>
<wd:Company_Code>123</wd:Company_Code>
</wd:Company>
<wd:Employee_Last_Name>Smith</wd:Employee_Last_Name>
<wd:Employee_First_Name>Joe</wd:Employee_First_Name>
<wd:SSN>123456789</wd:SSN>
<wd:Street_Address>123 First St</wd:Street_Address>
<wd:City>Colorado Springs</wd:City>
<wd:State_Province>CO</wd:State_Province>
<wd:ZIP_Code>80927</wd:ZIP_Code>
</wd:Report_Entry>
<wd:Report_Entry>
<wd:Company>
<wd:Company_Code>123</wd:Company_Code>
</wd:Company>
<wd:Employee_Last_Name>Smith</wd:Employee_Last_Name>
<wd:Employee_First_Name>Sally</wd:Employee_First_Name>
<wd:SSN>123456790</wd:SSN>
<wd:Street_Address>123 First St</wd:Street_Address>
<wd:City>Colorado Springs</wd:City>
<wd:State_Province>CO</wd:State_Province>
<wd:ZIP_Code>80927</wd:ZIP_Code>
</wd:Report_Entry>
その後、私のコードでは、あなたの助けのために、この
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:strip-space elements="*"/>
<xsl:output method="text" indent="no"/>
<xsl:template match="wd:Report_Data" xmlns:wd="urn:com.workday.report/Report_ABC">
<!-- Loop thru employee records for Company 123 -->
<xsl:for-each select="wd:Report_Entry[wd:Company/wd:Company_Code = '123']">
<xsl:call-template name="ProcessCompanyEmployee"/>
</xsl:for-each>
</xsl:template>
<!-- Process Company Employee -->
<xsl:template name="ProcessCompanyEmployee">
<!-- EMP Employee Record -->
<xsl:text>EMP|N|N</xsl:text>
<xsl:text>|</xsl:text>
<xsl:text>|</xsl:text>
<xsl:value-of select="wd:SSN"/>
<xsl:text>||</xsl:text>
<xsl:call-template name="insertNewLine"/>
</xsl:template>
おかげのように見えます!
申し訳ありませんが、私はWD置くことを忘れていました:XMLの会社ノードを、私はそのノードを含むように更新。私が抱えている問題は、wd:SSNにアクセスすることです。私はそれを直接for-eachに持っていればうまく動作します。しかし、従業員を処理するためのコードの部分は実際には600行以上であり、複数の企業でそれを実行する必要があるため、ProcessCompanyEmployeeテンプレートに分割します。私がそれをするとき、それはwd:SSNがもう嫌いです。私は、wd:SSNなどのフィールドを別の方法で参照する必要があると仮定しますが、それは何か分かりません。それが私の問題をより良く説明してくれるでしょうか – RDay
ああ...私はもっと読んでいます。コンテキストを提供するために、私のProcessCompanyEmployeeテンプレートに一致パターンが必要なように聞こえるかもしれませんが、どうしたらよいかわかりません。私はwdを試しました:Report_Entry、私はwdを試みました:Report_Data/wd:Report_Entry、どちらも動作しません。 – RDay
期待される出力は?私はあなたの* insertNewLine *テンプレートをスタイルシートのどこでも定義されていない ' '(改行)に置き換え、 'xmlns:wd ...'をルートタグに移動しました。パイプで区切られた出力でエラーは現れませんでした。あなたの問題が何であるか不明です。 – Parfait