2014-01-08 52 views
0

如何讀取節點/元素的值,忽略少量子標記。 我有其需要被忽略標籤列表,如何讀取節點XSLT的文本值

實施例:

一個) OUTPUT:標題TXT一個

<Title> 
    <Comment>Comment code</Comment>Title Txt a 
</Title> 

B) OUTPUT:標題TXT b

<Title> 
    <Ignore1>Comment code</Ignore1>Title Txt b 
</Title> 

c) 輸出:評論代碼標題文本c

<Title> 
    <includethis>Comment code</includethis>Title Txt c 
</Title> 

回答

0

只需匹配的Title元素:

<xsl:template match="Title"> 

和輸出它的文本內容:

<xsl:value-of select="."/> 

然後,過程反過來子節點:

<xsl:template match="*[parent::Title and starts-with(.,'Ignore')]"/> 

<xsl:template match="includethis"> 
    <xsl:value-of select="."/> 
</xsl:template> 

以上,第一個模板匹配名稱以「Ignore」開頭的元素。這是因爲我認爲我可以使用其他元素Ignore2Ignore3等。

最後,includethis元素被匹配並且其文本內容被輸出,與Title元素相同。

現在,總結一下:

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

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<xsl:output method="xml" indent="yes"/> 

<xsl:template match="/Title"> 
    <xsl:value-of select="."/> 
    <xsl:apply-templates/> 
</xsl:template> 


<xsl:template match="*[parent::Title and starts-with(.,'Ignore')]"/> 

<xsl:template match="includethis"> 
    <xsl:value-of select="."/> 
</xsl:template> 

</xsl:stylesheet> 
0

感謝您的幫助。但我錯過了提及開始問題的重要條件,

我需要在開始任何處理之前檢查「標題」是否爲空。

當子標記來自忽略列表中的一個時,下面的示例中的示例被認爲是空的。

<Title> 
<Comment>Comment code</Comment> 
</Title> 

示例代碼:

<xsl:choose> 
    <xsl:when test="Title and normalize-space(Title) != ''"> 
    <xsl:apply-templates select="Title" mode="xyz"/>      
    </xsl:when> 
    <xsl:otherwise> 
    <xsl:call-templates name="getalternative_label" mode="xyz"/> 
    </xsl:otherwise> 
</xsl:choose>