1
我有一個XSL變量誰包含:使用Muenchian分組和變量節點集?
<Products>
<product>
<productId >1</productId>
<textdate>11/11/2011</textdate>
<price>200</price>
</product>
<product>
<productId >6</productId>
<textdate>11/11/2011</textdate>
<price>100</price>
</product>
<product>
<productId >1</productId>
<textdate>16/11/2011</textdate>
<price>290</price>
</product>
</Products>
我想重新組合產品是這樣的:
{ product 1 :
11/11/2011 - 200
16/11/2011 - 290 }
{ product 6
11/11/2011 - 100 }
用一個簡單的Muenchian algorithme這是可能的,但我不能有一個XSL:關鍵火柴在一個變量上。
編輯
也許我並不清楚,
我有這個XML文檔mydocument.xml我試着改造:
<?xml version="1.0" encoding="utf-8" ?>
<root>
<test>somestuff</test>
</root>
我的XSL必須看起來像:
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="2.0" xmlns:ms="urn:schemas-microsoft-com:xslt" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output omit-xml-declaration="yes" method="xml" encoding="utf-8" />
<xsl:variable name="MyProductList" select="document('myresultlist.xml')" />
<xsl:key name="kProdById" match="$MyProductList/product" use="productId"/>
<xsl:template match=
"product[generate-id()
=
generate-id(key('kProdById',productId)[1])
]">
<xsl:value-of select="concat('
{product ', productId, ' :')"/>
<xsl:apply-templates mode="display"
select="key('kProdById',productId)"/>
}<xsl:text/>
</xsl:template>
<xsl:template match="product" mode="display">
<xsl:value-of select=
"concat('
', textdate, ' - ', price)"/>
</xsl:template>
<xsl:template match="text()"/>
</xsl:stylesheet>
當我把我的變量$ MyPr oductList在一個匹配的Visual Studio中出現錯誤,當我試圖強制運行我的Web應用程序崩潰。
所以我不能做什麼dimitre解釋我。
謝謝你幫我
@Christophe Debove:只要可變的霍爾ds節點集(輸入源來自哪裏)可以使用Muenchian方法,因爲它來自http://www.w3.org/TR/xslt#function-key:*它返回包含節點集的節點集與上下文節點相同的文檔,該文檔的命名鍵的值等於此字符串*。當然,你應該採用推式,而不是拉風格... – 2011-02-01 17:59:23
Christophe,我同意亞歷杭德羅,只要變量類型是節點集,你可以使用Muenchian分組和鍵沒有任何問題。如果變量不是節點集而是結果樹片段,則可以使用擴展函數,如exsl:node-set($ variable)http://www.exslt.org/exsl/functions/node-set/ index.html將結果樹片段轉換爲首先在其上應用Muenchian分組的節點集。 – 2011-02-01 19:41:32