struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Stewart Witchalls (JIRA)" <j...@apache.org>
Subject [jira] Commented: (WW-2234) XSLTResut.exposedValue transform failing on CDATA elements
Date Mon, 16 Jun 2008 12:50:05 GMT

    [ https://issues.apache.org/struts/browse/WW-2234?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=44171#action_44171
] 

Stewart Witchalls commented on WW-2234:
---------------------------------------

Hi James,

No I haven't found a solution yet. I'm using struts2 version 2.0.9.

XPath works when no CDATA and fails when CDATA present. Therefore, I'm assuming the problem
is not my code.

> XSLTResut.exposedValue transform failing on CDATA elements
> ----------------------------------------------------------
>
>                 Key: WW-2234
>                 URL: https://issues.apache.org/struts/browse/WW-2234
>             Project: Struts 2
>          Issue Type: Bug
>    Affects Versions: 2.0.9
>         Environment: Tomcat 6.0.14
> Struts 2.0.9
> JDK 1.5.0_11
> Xalan 2.7.0
>            Reporter: Stewart Witchalls
>            Priority: Minor
>             Fix For: 2.1.3
>
>
> Xalan 2.7.0 (with bundled Xerces) installed into $JDK_HOME/jre/lib/endorsed and $TOMCAT_HOME/common/endorsed
> action config:
>         <action name="ShowDataFormDemo" class="ShowDataFormDemo">
>             <result type="xslt">
>             	<param name="location">/WEB-INF/xsl/CreateDataForm.xsl</param>
>             	<param name="exposedValue">presenterXml</param>
>             </result>
>         </action>
> ShowDataFormDemo.presenterXml code:
>   public org.w3c.dom.Document getPresenterXml() throws Exception
>   {
> 	final byte[] data = this.presenterXml.getBytes("UTF-8");
>     	final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
>         final Document doc2 = factory.newDocumentBuilder().parse( new ByteArrayInputStream(data)
);
>         // debug to see if XPATH works inside server
> 	final XPathFactory fact = XPathFactory.newInstance();
> 	final XPath xpath = fact.newXPath();
> 	final XPathExpression xexpr = xpath.compile( "count(//items/*)" );
> 	System.out.println( xexpr.evaluate( doc2.getDocumentElement(), XPathConstants.NUMBER
) );
> 	return doc2;
>   }
> XML:
> <data>
> <items>
> <heading inline="true">
> <text><![CDATA[Data form example]]></text></heading>
> <paragraph inline="true">
> <text><![CDATA[Some explanatory text.]]></text></paragraph>
> <subHeading inline="true">
> <text><![CDATA[Lists]]></text></subHeading>
> </items>
> </data>
> CreateDataForm.xsl fragment:
>     vendor = <xsl:value-of select="system-property('xsl:vendor')"/>
>     vendor-url = <xsl:value-of select="system-property('xsl:vendor-url')"/>
>     xslt-version = <xsl:value-of select="system-property('xsl:version')"/>
>     count(items) = <xsl:value-of select="count(//items/*)"/>
> XPath in code works and returns correct count (aka. 3).
> However, same xpath in CreateDataForm.xsl transform fails and only returns 1. Also, transform
not able to obtain CDATA values (ie. displays nothing when "text" element selected).
> I've removed + added rows to the XML. The CreateDataForm.xsl transform always says count
= "1". It looks like it cannot see past the first CDATA section.
> If I remove the CDATA sections (ie. encode the element data as XML encoded strings),
transform xpath works??!!
> I've checked classpaths and can confirm that the endorsed Xalan libraries are being picked
up.
> I've even run the transform inside the action itself. It worked as expected.
> I can work around this by removing the CDATA sections from the XML, but I've spent the
last few days going mad. Just cannot see what's going wrong.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message