0

edifabric x12 xml ファイルで単純な xsl 変換を実行しようとしています。<D_744_1>要素を選択するにはどうすればよいですか?

サンプル XML:

<INTERCHANGE xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="www.edifabric.com/x12">
    <S_ISA>
        <D_744_1>00</D_744_1>
    </S_ISA> 
</INTERCHANGE>

サンプル XSL:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <testfield><xsl:value-of select="INTERCHANGE/S_ISA/D_744_1" /></testfield>
    </xsl:template>
</xsl:stylesheet>

結果:

<?xml version="1.0" encoding="utf-8"?>
<testfield/>

望ましい結果:

 <?xml version="1.0" encoding="utf-8"?>
    <testfield>00</testfield>

更新された回答ありがとう@ChriPf

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:edi="www.edifabric.com/x12" exclude-result-prefixes="edi">

    <xsl:template match="edi:INTERCHANGE">
        <testfield><xsl:value-of select="edi:S_ISA/edi:D_744_1" /></testfield>
    </xsl:template>

</xsl:stylesheet>
4

1 に答える 1

1

ソリューションは次のようになります。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:edi="www.edifabric.com/x12">
  <xsl:template match="edi:D_744_1">
    <xsl:element name="testfield">
        <xsl:copy-of select="." />
    </xsl:element>
</xsl:template>
</xsl:stylesheet>

xml にデフォルトの名前空間がある場合は、xsl でも定義する必要があります。詳細については、こちらなどをご覧ください

于 2013-06-12T14:53:50.237 に答える