1
情況我有以下問題。我需要知道一個條件是否滿足任何x個同名子節點中的任何一個,並且不處理該行。我正在解析一個xml到一個文本文件,但它可能有2個或3個相同的子節點被稱爲相同的不同的值,如果其中一個滿足條件,然後處理該行。XSL模板匹配,然後如果下面的同輩
這裏是我的XML的一部分:
<home>
<app>
<data>
<rec>
<rpos>1</rpos>
<itemdef>
<item>HLK-TEST-A</item>
<desc>SOMETHING1</desc>
<ics>
<code>HKU</code>
<bpid></bpid>
<citem>TEST-A</citem>
</ics>
<ics>
<code>HLK</code>
<bpid></bpid>
<citem>TEST-A</citem>
</ics>
</itemdef>
</rec>
<rec>
<rpos>2</rpos>
<itemdef>
<item>HLK-TEST-B</item>
<desc>Test</desc>
<ics>
<code>HKU</code>
<bpid></bpid>
<citem>TEST-B</citem>
</ics>
</itemdef>
</rec>
<rec>
<rpos>3</rpos>
<itemdef>
<item>HLK-TEST-C</item>
<desc>Test3</desc>
<ics>
<code>HLK</code>
<bpid></bpid>
<citem>TEST-C</citem>
</ics>
</itemdef>
</rec>
<rec>
<rpos>4</rpos>
<itemdef>
<item>HLK-TEST-D</item>
<desc>SOMETHING4</desc>
<ics>
<code>HLK</code>
<bpid></bpid>
<citem>TEST-D</citem>
</ics>
<ics>
<code>HKU</code>
<bpid></bpid>
<citem>TEST-D</citem>
</ics>
</itemdef>
</rec>
</data>
</app>
</home>
基本上記錄1,3和4必須處理,因爲他們有一個「代碼」標籤與HLK
的價值這裏就是我對我的XSLT ...儘管我可以設法獲得唯一的記錄1和3 ...你能幫忙嗎?
XSL:
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="home/app/data/rec[itemdef/ics[position() = last()]/code[not(starts-with(.,'HLK'))]]">
</xsl:template>
<xsl:template match="home">
<xsl:apply-templates select="app"/>
</xsl:template>
<xsl:template match="app">
<xsl:apply-templates select="data"/>
</xsl:template>
<xsl:template match="app" mode="print">
<xsl:text>105604|</xsl:text>
<xsl:value-of select='date'/>
<xsl:text>T</xsl:text>
<xsl:value-of select='time'/>
<xsl:text>|</xsl:text>
</xsl:template>
<xsl:template match="data">
<xsl:apply-templates select="rec"/>
</xsl:template>
<xsl:template match="rec">
<xsl:apply-templates select="itemdef"/>
</xsl:template>
<xsl:template match="itemdef">
<xsl:apply-templates select="ancestor::app" mode="print"/>
<xsl:value-of select='item'/><xsl:text>|</xsl:text>
<xsl:value-of select='desc'/><xsl:text>|</xsl:text>
<xsl:text>|</xsl:text>
<xsl:text>|
</xsl:text>
</xsl:template>
</xsl:stylesheet>
這是我的電流輸出:
105604|T|HLK-TEST-A|SOMETHING1|||
105604|T|HLK-TEST-C|Test3|||
但應該是:
105604|T|HLK-TEST-A|SOMETHING1|||
105604|T|HLK-TEST-C|Test3|||
105604|T|HLK-TEST-D|SOMETHING4|||
太感謝你了!你的第一個建議做到了!我在這工作了2天,並沒有意識到我需要相反的:)謝謝你Mads! – marshal82