OK, figured it out. It was because of the '#' at the end of the csv namespace declaration in my xslt stylesheet. This is a very common thing to do when using owl namespaces, however apparently xslt doesn't like it, I guess because it doesn't match exactly the csv namespace declaration in the xml itself. For any semantic web/OWL practitioners used to just putting the # on the end, this could be a real bad "gotcha".

Jeff



On Jul 11, 2008, at 3:30 PM, Jeff Schmitz wrote:

Hello,
I'm trying to take the output of the CSVGenerator and transform it. However, my xslt will not match any of the elements that have colons in them.

e.g. for the following xml generated by CSVGenerator:

<?xml version="1.0" encoding="ISO-8859-1"?><relex xmlns:cinclude="http://apache.org/cocoon/include/1.0 ">
  <systems><csv:document xmlns:csv="http://apache.org/cocoon/csv/1.0";>
    <csv:record number="1">
        <csv:field number="1">System</csv:field>
        <csv:field number="2">Pump and Valve System</csv:field>
    </csv:record>
</csv:document></systems>

The following xslt will not find a match:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
        xmlns:csv="http://apache.org/cocoon/csv/1.0#"; version="2.0">
        <xsl:output method="xml" indent="yes" />
        <xsl:template match="/">
          <!-- Write out the standard OWL start elements and imports-->
<xsl:apply-templates select="/relex/systems/csv:document/ csv:record" />
        </xsl:template>
        
        <xsl:template match="/relex/systems/csv:document/csv:record">
                <matchedIt/>
        </xsl:template>
</xsl:stylesheet>

I can match the "relex" and the "systems" tags just fine, but neither of the ones with colons in them. I've tried several variations on the template match (e.g. match=//csv:record, etc). any ideas?

Thanks,
Jeff

Reply via email to