2013-03-26 91 views
1

您好我有下面的XML選擇在XSLT

<primaryie> 
    <content-style font-style="bold">VIRRGIN system 7.204, 7.205</content-style> 
    </primaryie> 

,並通過應用下面的XSLT我能夠選擇號碼。

<xsl:value-of select="current()/text()"/> 

但在以下情況下

<primaryie> 
    <content-style font-style="bold">VIRRGIN system</content-style> 
    7.204, 7.205 
    </primaryie> 

如何做的是選擇的號碼?我想要使​​用xslt:內容樣式的父項。

我也有一些情況下,兩個xmls走到一起。如果兩種情況都存在,請讓我知道如何選擇號碼。下面

感謝

回答

1

使用

<xsl:template match="primaryie/text()"> 
    <!-- Processing of the two numbers here --> 
</xsl:template> 

可以肯定的模板將執行選擇,你可以有一個xsl:apply-templates是選擇想要的文本節點,這本身就是在選擇要執行的模板。

例如

<xsl:template match="primaryi"> 
    <!-- Any necessary processing, including this: --> 
    <xsl:apply-templates select="text()"/> 
</xsl:template> 
+0

感謝@Dimitre這已經解決我的問題 – 2013-03-26 14:58:59

+0

@MarsoniNm,歡迎您。 – 2013-03-26 15:43:37

0

我認爲使用一個類似模板的設計應該有所幫助:

<xsl:template match="primaryie"> 
    <!-- Do some stuffs here, if needed --> 
    <!-- With the node() function you catch elements and text nodes (* just catch elements) --> 
    <xsl:apply-templates select="node()"/> 
</xsl:template> 

<xsl:template match="content-style"> 
    <!-- Do some stuffs here, if needed --> 
    <!-- same way --> 
    <xsl:apply-templates select="node()"/> 
</xsl:template> 

<!-- Here you got the template which handle the text nodes. It's probably better to add the ancestor predicate to limit its usage to the only text nodes we need to analyze ('cause the xslt processor often has some silent calls to the embedded default template <xsl:template match="text()"/> and override it completely could have some spectacular collaterall damages). --> 
<xsl:template match="text()[ancestor::primaryie]"> 
    <!-- Do your strings 'cooking' here --> 
</xsl:template> 
1
<xsl:template match="content-style"> 
    <xsl:value-of select="parent::*/text()"/> 
</xsl:template> 

,或者

<xsl:template match="content-style"> 
    <xsl:value-of select="../text()"/> 
</xsl:template>