我正在使用call-template,其源代碼如下所示。在xslt中處理呼叫模板的不同名稱空間
來源:
<Content>
<first>
<text>
Text
</text>
<link xmlns="Some namespace">
<AA>abcd</AA>
<BB>hi all</BB>
</link>
</first>
<second>
<link xmlns="Some other namespace">
<AA>abcd1</AA>
<BB>hi all21</BB>
</link>
</second>
<three>
<link xmlns="other namespace">
<AA>abcd2</AA>
<BB>hi all33</BB>
</link>
</three>
</Content>
XSLT寫:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:n1="Some namespace" xmlns:n2="Some other namespace" xmlns:n3="other namespace">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="Content">
<xsl:call-template name="process">
<xsl:with-param name="item" select="first/n1:link" />
</xsl:call-template>
<xsl:call-template name="process">
<xsl:with-param name="item" select="second/n2:link" />
</xsl:call-template>
<xsl:call-template name="process">
<xsl:with-param name="item" select="three/n3:link" />
</xsl:call-template>
</xsl:template>
<xsl:template name="process">
<xsl:param name="item" />
<xsl:value-of select="$item/AA" />
</xsl:template>
</xsl:stylesheet>
我越來越空白output.I知道原因,因爲我沒有追加的命名空間前綴它。像「n1:A」一樣。
隨着多次來臨。我寫了一個模板,並在需要時調用。但每個鏈接的名稱空間是不同的。如何修改我的代碼以便我可以重新使用模板「process」。
任何人都可以幫忙,我該如何修改相應的「進程」模板來處理不同的命名空間,但結構相同。
謝謝。
'namespace ='屬性不會引入XML名稱空間。它只是一個屬性,所以在你的XSL中尋找它('select =')作爲命名空間是行不通的。至於答案,這將不得不等待,直到你的XML被糾正。 –
@Jim Garrison。對不起,輸入錯誤。我編輯了這個問題。 – Patan