开发者

XML to HTML: outputting literal child nodes

Whats the most effcient XSL for transforming this XML:

<matflash label="popup" btn-label="Interview Transcript">
  <flashtext><a href="/education/resources/students/video_cases/protected/ece/product/media/508_Guidance_T开发者_C百科ranscript.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>

to this 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>

I'm having trouble using <xsl:value-of> or <xsl:copy> to display the literal child nodes (tag and text) of flashtext.


The following stylesheet:

<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>

Produces the following result when applied to your source document:

<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>

Note the use of the identity transform to copy through all elements below the flashtext nodes. This works with your input, but would need to be adjusted if you had elements above or below matflash and flashtext that you did not want to copy through. As always, different requirements result in different solutions.

Edit: Upon reflection, if you just want to copy everything below the flashtext and have something that still works in a larger document, then the standard identity transform template can be replaced with a single copy-of:

<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>

...which produces the same output.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜