OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: CDATA sections in W3C XML Infoset



> Given that the DOM allows adjacent Text nodes unless
> normalise() is called, and CDATASection nodes extend 
> the interfaces of Text, how would your processing
> change if you just dealt with Text alone?

After I get the tree, I call normalize() on it. Suppose my processing
is to count people whose first name is "Karl", in a document like

<people><person><first>Karl</first><last>Käfer</last></person></people>

Then I'd do

  karls = 0
  root.normalize()
  for person in root.getElementsByTagName("person"):
      first = person.getElementsByTagName("first")[0]
      for n in first.childNodes:
          if n.nodeType == Node.TEXT_NODE and n.data == "Karl":
              break
      else:
          continue
      karl += 1

Now, if there are CDATA sections in there, this algorithm will break:
the string Karl could still be split across several nodes.

Regards,
Martin