Quite a few sitemap components rely on parameters that actually contain XML element/attribute or XPath references: the first examples that cross my mind are XPath*Generator, HTMLGenerator and FilterTransformer (not to mention all the JXPath stuff).

Sometimes (a lot of times, actually) it's necessary to pass *namespaced* references, and the situation is only going to get worse with the increasing use of advanced XML (think about the SOAP or DAV nightmare). Currently only the XPathTraversableGenerator supports a way to pass namespaced elements, and to do that it uses a hack made of parameters starting with "xmlns:" whose value is the namespace URI. this seems silly to me, since the sitemap is an XML file. How better would it be to write (a' la XSLT):

<map:generate
  type="xpathtraversable"
  src="my.xml"
  xpath="/html:head/html:title"
  xmlns:html="http://www.w3.org/1999/xhtml"/>

instead than:

<map:generate
  type="xpathtraversable"
  src="my.xml"
  xpath="/html:head/html:title">
  <map:parameter name="xmlns:html"
       value=""http://www.w3.org/1999/xhtml"/>
</map:generate>

The former looks to me as the simplest and more consistent solution, with the only problem being the TreeProcessor being able to pass namespace informations to the components. It could be as easy as a NamespaceMap being available in the object model, but I'm sure that the TreeProcessor gurus might have a better idea to deal with this particular issue.

Does all this make sense?

--
Gianugo Rabellino
Pro-netics s.r.l. -  http://www.pro-netics.com
Orixo, the XML business alliance - http://www.orixo.com
    (Now blogging at: http://blogs.cocoondev.org/gianugo/)



Reply via email to