On Oct 23, 2008, at 11:09 PM, Recoil wrote:

Only thing is, I want the article text to be xhtml-enabled. so there's
<b>'s and <br/>'s and such in there, and we're looking at something
more like

<article>
      <title>This title is rad.</title>
      <text>
      And this is some <b>awesome</b> article text.<br/>
      It's HTML formatted though, <i>that could pose a problem</i>.
      </text>
</article>


I want to grab ALL of the text content inside of the <text> node, and
just carte blanche throw it in the page.


No, from what you say below you don't want the text, you want all the nodes: text, elements, etc.



So.. how can I do that? .text() strips out all the html
entities,  .html() works what I can best describe as 'intermittently',
and is unsupported for xml documents (only supported for html
docs).... what can i use to just tell js/jquery to "find everything
between <text> and </text>, and stick it in the DOM as xhtml, tags
included"?


The *best* way to handle this type of thing (if you are up for it) is to use XSL, which works in all browsers. You are looking for the a modified 'identity transform'. Basically, a modified identity transform allows you to recursively copy everything you do not override by a template match.

An example XSL that does what you want:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="1.0">

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

  <xsl:template match="article">
    <div class="article" xmlns="http://www.w3.org/1999/xhtml";>
      <xsl:apply-templates/>
    </div>
  </xsl:template>

  <xsl:template match="title">
    <h1 xmlns="http://www.w3.org/1999/xhtml";>
      <xsl:apply-templates/>
    </h1>
  </xsl:template>

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

<!-- Identity template: copies everything not overridden/matched in other templates -->

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

</xsl:stylesheet>

Reply via email to