2010-11-02 76 views
0

任何幫助非常讚賞這一點。XML - 幫助刪除節點發布

我想從外部xml文件(我使用xslt進行了樣式化)中的某個源中刪除某些節點。這裏是飼料:http://www.wcwg.info/feeds/localevents.aspx?a=00392&p=CM159EH&m=20

我想刪除的節點是:

地方活動發佈到WhereCanWeGo.com.00392CM15 9EH31 /一千〇七分之一十/1010001111111111111111111031分之11 月 2010http://www.wherecanwego.com /events/signin.aspxww.wherecanwego.com/events/signin.aspx

有沒有人可以指導我如何刪除這些初始節點(參數)?他們是郵政編碼,帳號,飼料網址等。

我非常渴望完成這個任務,但它是最後的障礙!提前的人誰回答感謝...

樣式表(片段)

<xsl:template match="/"> 
    <xsl:apply-templates/> 
</xsl:template> 

<xsl:template match="item"> 
    <div class="local_events"> 
    <xsl:apply-templates select="title"/> 
    <xsl:apply-templates select="Venue"/> 
    <xsl:apply-templates select="Times"/> 
    <xsl:apply-templates select="Dates"/> 
    <xsl:apply-templates select="DetailsURL"/> 
    </div><div style="height:1px;border-bottom:1px dotted #cfcfcf;"></div> 
</xsl:template> 

<xsl:template match="title"> 
    <h2><a class="title" target="_blank" rel="nofollow" href="{../DetailsURL}"><xsl:value-of select="."/></a></h2> 
</xsl:template> 

<xsl:template match="Venue"> 
    <span>Location: </span> 
    <xsl:value-of select="."/> 
    <br /> 
</xsl:template> 

<xsl:template match="Times"> 
    <span>Details: </span> 
    <xsl:value-of select="."/> 
    <br /> 
</xsl:template> 

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

<xsl:template match="DetailsURL"> 
    <a style="font-weight:normal;margin-left:0.5em;" target="_blank" rel="nofollow" href="{.}"><xsl:text>Full details...</xsl:text></a> 
</xsl:template> 

回答

0

如果您已經使用XSLT樣式表那不正是你想要的,那麼請張貼樣式表或鏈接到它。 [編輯] 在您發佈的樣式變化

<xsl:template match="/"> 
    <xsl:apply-templates/> 
</xsl:template> 

<xsl:template match="/"> 
    <xsl:apply-templates select="//item"/> 
</xsl:template> 
+0

嗨馬丁,當然是謝謝你問 - 我不想傷害任何人,所以儘量保持簡潔!這裏是我的XSLT,是的,我很想知道如何確保頂級子節點(上面的'item')沒有發佈:我現在似乎不能在這裏發佈他的代碼!我會看到我怎麼可以鏈接到它... – sue 2010-11-02 13:10:48

0

從你制定不佳的問題,並分析了進料,看來你想擺脫上的所有兒童(中LocalEvents)節點沒有被命名爲item

該轉化

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<xsl:template match="node()|@*"> 
    <xsl:copy> 
     <xsl:apply-templates select="node()|@*"/> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="/*/*[not(self::item)]"/> 
</xsl:stylesheet> 

當所提供的進料(http://www.wcwg.info/feeds/localevents.aspx?a=00392&p=CM159EH&m=20)被應用時產生的有用結果

請注意:如何有用元素被刪除由一個空的模板(不處理,忽略)匹配他們並重寫身份規則用來複制其餘節點「原樣」。

+0

真的有點粗魯,我不認爲它執行得不好。 – sue 2010-11-02 13:28:05

+0

@sue:即使在現在,@Alejandro爲了讓它變得更好而做了很多工作,但它缺乏:1.源XML文檔; 2.適當的格式,不需要水平滾動。在Alejandro執行編輯之前,XSLT代碼完全不可見。用幾句話 - 一個典型的例子,如何*不*問一個問題。 – 2010-11-02 13:52:56

0

現在這已得到糾正,以現在的作品,在相同的情況下任何人的情況如下:

<xsl:template match="/"> 
    <xsl:apply-templates select="/LocalEvents/item"/>  
</xsl:template> 

<xsl:template match="item"> 
    <div class="local_events"> 
    <xsl:apply-templates select="title"/> 
    <xsl:apply-templates select="Venue"/> 
    <xsl:apply-templates select="Times"/> 
    <xsl:apply-templates select="Dates"/> 
    <xsl:apply-templates select="DetailsURL"/> 
    </div><div style="height:1px;border-bottom:1px dotted #cfcfcf;"></div> 
</xsl:template> 

<xsl:template match="title"> 
    <h2><a class="title" target="_blank" rel="nofollow" href="{../DetailsURL}"><xsl:value-of select="."/></a></h2> 
</xsl:template> 

<xsl:template match="Venue"> 
    <span>Location: </span> 
    <xsl:value-of select="."/> 
    <br /> 
</xsl:template> 

<xsl:template match="Times"> 
    <span>Details: </span> 
    <xsl:value-of select="."/> 
    <br /> 
</xsl:template> 

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

<xsl:template match="DetailsURL"> 
    <a style="font-weight:normal;margin-left:0.5em;" target="_blank" rel="nofollow" href="{.}"><xsl:text>Full details...</xsl:text></a> 
</xsl:template> 

</xsl:stylesheet> 
0

其他approuch。這個樣式表:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:preserve-space elements="Times"/> 
    <xsl:template match="text()"/> 
    <xsl:template match="item"> 
     <div class="local_events"> 
      <xsl:apply-templates/> 
     </div> 
     <div style="height:1px;border-bottom:1px dotted #cfcfcf;"></div> 
    </xsl:template> 
    <xsl:template match="title"> 
     <h2> 
      <a class="title" target="_blank" rel="nofollow" href="{../DetailsURL}"> 
       <xsl:value-of select="."/> 
      </a> 
     </h2> 
    </xsl:template> 
    <xsl:template match="Venue"> 
     <span>Location: </span> 
     <xsl:value-of select="."/> 
     <br /> 
    </xsl:template> 
    <xsl:template match="Times"> 
     <span>Details: </span> 
     <xsl:value-of select="."/> 
     <br /> 
    </xsl:template> 
    <xsl:template match="Dates"> 
     <span>Dates: </span> 
     <xsl:value-of select="."/> 
    </xsl:template> 
    <xsl:template match="DetailsURL"> 
     <a style="font-weight:normal;margin-left:0.5em;" target="_blank" rel="nofollow" href="{.}"> 
      <xsl:text>Full details...</xsl:text> 
     </a> 
    </xsl:template> 
</xsl:stylesheet> 

注意:當執行一個在同一層次中的一個轉變,這足以表明在輸入源的特定元素的規則和覆蓋文本節點內置規則(輸出字符串值)與一個空的規則。