【问题标题】:XML to HTML using XSL - check node contents使用 XSL 将 XML 转换为 HTML - 检查节点内容
【发布时间】:2010-12-07 15:15:14
【问题描述】:
<A>
  <B>Hello</B>
  <B>Goodbye</B>
  <B>Hello</B>
</A>

还有这个 XSL:

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

我希望 XSL 只打印出 B 节点包含“Hello”的内容。

注意:我不想打印实际的节点内容(“Hello”),我想打印其他内容,即:

“很高兴认识你” “很高兴认识你”

(因为有 2 个节点存在“Hello”并且“Goodbye 被忽略”)

谢谢!

【问题讨论】:

    标签: html xml web-services xslt


    【解决方案1】:

    试试这个:

    <xsl:template match="B[text()='Hello']" >  
       Nice to meet you 
    </xsl:template>  
    
    
    <xsl:template match="/" >  
       <html> 
          <body>  
             <xsl:apply-templates/>  
          </body> 
       </html> 
    </xsl:template> 
    

    【讨论】:

      【解决方案2】:

      作为 Eric 的变体,这也应该有效。 Eric 更通用,因为您可以为每个节点类型编写一个模板,而无需更改根模板。但是,如果没有匹配的模板,则会应用默认模板(这可能意味着“Goobye”节点将打印出“Goodbye”)。另一方面,下面的解决方案只会为'B'包含Hello的节点调用apply-templates,因此'Goodbye'节点被忽略(或者它应该这样做;它未经测试,但原则应该是合理的:-) )。

      <xsl:template match="node()" >
         Nice to meet you 
      </xsl:template>  
      
      <xsl:template match="/" >  
         <html> 
            <body>  
               <xsl:apply-templates select="/A/B[text()='Hello']" />  
            </body> 
         </html> 
      </xsl:template> 
      

      【讨论】:

      • 我刚刚修复了 xpath。
      【解决方案3】:

      你需要三个规则:

      <xsl:template match="/" >
          <html>
             <body>
                <xsl:apply-templates/>
             </body>
          </html>
      </xsl:template>  
      
      <xsl:template match="B[contains(.,'HELLO')]">
          <xsl:text>Nice to meet you</xsl:text>
      </xsl:template>  
      
      <xsl:template match="text()"/>
      

      注意:首先是您自己的规则,其次是 B 元素的字符串值中包含“HELLO”的规则(所有后代文本节点的串联),第三是覆盖内置文本节点规则(输出字符串值),规则为空(无输出)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-02-12
        • 1970-01-01
        • 2012-02-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-22
        相关资源
        最近更新 更多