XML - 帮助删除正在发布的节点

时间:2010-11-02 12:36:34

标签: asp.net xml xslt

对此有任何帮助。

我想从外部xml文件中删除某些节点,这些节点是我用xslt设置的。这是Feed: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> 

4 个答案:

答案 0 :(得分:0)

如果您已经使用了不能完全符合要求的XSLT样式表,请发布样式表或链接。 [编辑] 在您发布的样式表更改

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

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

答案 1 :(得分:0)

从您的问题不清楚并分析Feed,您似乎想要摆脱未命名为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>

应用于提供的Feed(http://www.wcwg.info/feeds/localevents.aspx?a=00392&p=CM159EH&m=20)时,会生成所需结果

请注意:如何通过匹配它们的空模板删除(未处理,忽略)所需元素,并覆盖用于复制其余元素的身份规则节点“原样”。

答案 2 :(得分: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>

答案 3 :(得分: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>

注意:在同一层次结构中进行一对一转换时,足以声明输入源中特定元素的规则并覆盖文本节点的内置规则(输出带有空规则的字符串值。