如何通过XSLT删除元素?

时间:2018-03-19 19:03:41

标签: html xml xslt

当我将其输出到XML时,我需要停止使用XSLT显示此HTML文件中的new-sat-grid.png图像。我怎么能这样做?

<section class="ktp-question-stem" data-uuid="2ede10d4ba5f46f8b9d40fb158ec5465">
  <p data-uuid="2087a4751e864674a726b905957a09cd">How many minutes
  will it take Daniel to spray all of the lawns in the
  neighborhood?</p>
  <img class="icon" src="../../img/chapter02/new-sat-grid.png" 
       data-graphic-ref="new-sat-grid.png"
       alt="new-sat-grid.eps"
       data-uuid="291dd9a095ad495bb9b191ced96714b7" />
</section>
<ol class="ktp-answer-set" 
    data-uuid="6b3025efceb341dd911e77e834714d98">
  <li property="ktp:answer" typeof="ktp:AnswerCorrect"
      data-uuid="acb5e012669042538256690d67bc29bd">60</li>
</ol>
<section property="ktp:feedback" typeof
         ="ktp:Feedback"
         class="ktp-feedback"
         data-uuid="5d6f009d0cfcf647b1134855aef7eb6e">

1 个答案:

答案 0 :(得分:1)

从身份转换开始,添加一个抑制img元素的模板:

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

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

  <xsl:template match="img"/>

</xsl:stylesheet>

解释:默认情况下,标识转换会将所有内容复制到输出中。通过编写与img匹配且不执行任何操作的简单模板来覆盖此默认行为,从而防止此类元素出现在输出文档中。