html - XML 到 HTML : outputting literal child nodes

标签 html xml xslt xpath transform

转换此 XML 最有效的 XSL 是什么:

<matflash label="popup" btn-label="Interview Transcript">
  <flashtext><a href="/education/resources/students/video_cases/protected/ece/product/media/508_Guidance_Transcript.doc">Download Transcript</a></flashtext>
  <flashtext class="H1">Linda Rudolph - Teacher</flashtext>
  <flashtext class="H1">Little Sprouts, Methuen School</flashtext>
  <flashtext><b>Interviewer:</b> Linda, could you start by describing to me what you think the basis of a well-managed classroom is. Describe in your own words, what you think the basis of a well managed classroom is? What helps you get there?</flashtext>
  <flashtext><b>Linda:</b> I think just having a well managed classroom is just having good expectations so that for the children, that they know their limits, what is expected of them, what is just being able to tell them, "Okay, this is what we're doing today.", and then just set it up for them and then they know they can accomplish it, just not having any mixed messages for them.</flashtext>
  <flashtext><b>Linda:</b> Having a well managed classroom is just having a really good curriculum that the teacher's can follow and teach the children so that they're interested and they know exactly what's expected of them and then the management comes from them just knowing what's expected of them, just setting up classroom rules and everybody being able to follow them and knowing what's expected.</flashtext>
...
</matflash>

到此 HTML:

<div id="interview">
  <div><a href="/education/resources/students/video_cases/protected/ece/product/media/508_Guidance_Transcript.doc">Download Transcript</a></div>
  <div class="H1">Linda Rudolph - Teacher</div>
  <div class="H1">Little Sprouts, Methuen School</div>
  <div><b>Interviewer:</b> Linda, could you start by describing to me what you think the basis of a well-managed classroom is. Describe in your own words, what you think the basis of a well managed classroom is? What helps you get there?</div>
  <div><b>Linda:</b> I think just having a well managed classroom is just having good expectations so that for the children, that they know their limits, what is expected of them, what is just being able to tell them, "Okay, this is what we're doing today.", and then just set it up for them and then they know they can accomplish it, just not having any mixed messages for them.</div>
  <div><b>Linda:</b> Having a well managed classroom is just having a really good curriculum that the teacher's can follow and teach the children so that they're interested and they know exactly what's expected of them and then the management comes from them just knowing what's expected of them, just setting up classroom rules and everybody being able to follow them and knowing what's expected.</div>
...
</div>

我在使用 <xsl:value-of> 时遇到问题或<xsl:copy>显示flashtext的文字子节点(标签和文本)。

最佳答案

以下样式表:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()" />
        </xsl:copy>
    </xsl:template>
    <xsl:template match="matflash">
        <div id="interview">
            <xsl:apply-templates />
        </div>
    </xsl:template>
    <xsl:template match="flashtext">
        <div>
            <xsl:apply-templates select="@*|node()" />
        </div>
    </xsl:template>
</xsl:stylesheet>

应用于源文档时会产生以下结果:

<div id="interview">
    <div>
        <a href="/education/resources/students/video_cases/protected/ece/product/media/508_Guidance_Transcript.doc">Download Transcript</a>
    </div>
    <div class="H1">Linda Rudolph - Teacher</div>
    <div class="H1">Little Sprouts, Methuen School</div>
    <div>
        <b>Interviewer:</b>
        Linda, could you start by describing to me what you think the basis of
        a well-managed classroom is. Describe in your own words, what you
        think the basis of a well managed classroom is? What helps you get
        there?
    </div>
    <div>
        <b>Linda:</b>
        I think just having a well managed classroom is just having good
        expectations so that for the children, that they know their limits,
        what is expected of them, what is just being able to tell them, "Okay,
        this is what we're doing today.", and then just set it up for them and
        then they know they can accomplish it, just not having any mixed
        messages for them.
    </div>
    <div>
        <b>Linda:</b>
        Having a well managed classroom is just having a really good
        curriculum that the teacher's can follow and teach the children so
        that they're interested and they know exactly what's expected of them
        and then the management comes from them just knowing what's expected
        of them, just setting up classroom rules and everybody being able to
        follow them and knowing what's expected.
    </div>
</div>

请注意使用恒等变换来复制 flashtext 节点下的所有元素。这适用于您的输入,但如果您不想复制 matflashflashtext 上方或下方的元素,则需要进行调整。一如既往,不同的需求会导致不同的解决方案。

编辑:经过深思熟虑,如果您只想复制 flashtext 下面的所有内容并保留在较大文档中仍然有效的内容,那么标准身份转换模板可以替换为单个副本:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="matflash">
        <div id="interview"><xsl:apply-templates /></div>
    </xsl:template>
    <xsl:template match="flashtext">
        <div><xsl:copy-of select="@*|node()" /></div>
    </xsl:template>
</xsl:stylesheet>

...产生相同的输出。

关于html - XML 到 HTML : outputting literal child nodes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5569033/

相关文章:

python - Pandas read_xml() 方法测试策略

javascript - div 高度自动调整以适应加载的页面内容

javascript - 单击链接后自动关闭菜单

html - 在页面内容旁边放置一列的最佳方式是什么?

python - 如何将 Python 变量打印为 XML 文件的属性值

java - org.dom4j.DocumentException : Stream closed Nested exception: Stream closed

xml - XSL 根据子项向父项添加属性

javascript - 包括第三方页眉和页脚

c# - 在 C# 中使用相对路径在 Internet Explorer 中打开 xml 文档

xml - 如何使用命名空间对 XML 进行 XSL 转换?