[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: apply-templates with-param failed

Subject: RE: apply-templates with-param failed
From: Xiaocun Xu <xiaocunxu@xxxxxxxxx>
Date: Tue, 27 Sep 2005 06:48:09 -0700 (PDT)
xsl apply templates with param
The source document is an output of a static code
analyzer called FindBugs, following is a sample:
<?xml version="1.0" encoding="UTF-8"?>

<BugCollection version="0.9.3" sequence="0"
timestamp="1127452941384" release="">
  <Project filename="&lt;&lt;unnamed project&gt;&gt;">
    <SrcDir>X:\MyServer\classfiles</SrcDir>
  </Project>
  <BugInstance type="DE_MIGHT_IGNORE" priority="2"
abbrev="DE" category="CORRECTNESS" uid="258">
    <ShortMessage>Method might ignore
exception</ShortMessage>
    <LongMessage>DE:
jsp_servlet._en.__notification_alert._jspService(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
might ignore java.lang.Exception</LongMessage>
    <Class
classname="jsp_servlet._en.__notification_alert">
      <Message>In class
jsp_servlet._en.__notification_alert</Message>
    </Class>
    <Method
classname="jsp_servlet._en.__notification_alert"
name="_jspService"
signature="(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V"
isStatic="false">
      <SourceLine
classname="jsp_servlet._en.__notification_alert"
start="619" end="829" startBytecode="0"
endBytecode="1284" opcodes=""
sourcefile="__notification_alert.java"/>
      <Message>In method
jsp_servlet._en.__notification_alert._jspService(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)</Message>
    </Method>
    <SourceLine classname="" start="147" end="147"
startBytecode="399" endBytecode="399"
opcodes="25,25,25,182,167|58|44,25,18,178,184"
sourcefile="../../com/avinamart/WebInterface/public_html/en/include/notification_head.inc">
      <Message>At __notification_alert.java:[line
687]</Message>
    </SourceLine>
    <Class classname="java.lang.Exception"
role="CLASS_EXCEPTION">
      <Message>Exception class
java.lang.Exception</Message>
    </Class>
  </BugInstance>
  <BugCategory category="PERFORMANCE">
    <Description>Performance</Description>
  </BugCategory>
  <BugCategory category="CORRECTNESS">
    <Description>Correctness</Description>
  </BugCategory>
  <BugCategory category="STYLE">
    <Description>Style</Description>
  </BugCategory>
  <BugPattern type="DE_MIGHT_IGNORE" abbrev="DE"
category="CORRECTNESS">
    <ShortDescription>Method might ignore
exception</ShortDescription>
    <Details><![CDATA[

  <p> This method might ignore an exception.&nbsp; In
general, exceptions
  should be handled or reported in some way, or they
should be thrown
  out of the method.</p>

    ]]></Details>
  </BugPattern>
  <BugCode abbrev="DE">
    <Description>Dropped or ignored
exception</Description>
  </BugCode>
  <Errors></Errors>
  <FindBugsSummary></FindBugsSummary>
  <ClassFeatures></ClassFeatures>
  <History></History>
</BugCollection>

Yesterday, with you and help of the list, I was able
to get the following XSLT work, without the document()
and with-param:

<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format">
	<xsl:template match="/">
		<xsl:call-template name="splitByFunctionalAreas"/>
	</xsl:template>
	<xsl:template name="splitByFunctionalAreas">
		<xsl:result-document href="messaging_bugs.xml">
			<xsl:apply-templates select="BugCollection"/>
		</xsl:result-document>
	</xsl:template>
	<xsl:template match="BugCollection">
		<!-- element BugCollection has to start on a new
line; otherwise, FindBugs won't load successfully -->
		<xsl:text>&#x9;&#xA;</xsl:text>
		<xsl:element name="BugCollection">
			<xsl:copy-of select="@*"/>
			<xsl:text>&#x9;&#xA;</xsl:text>
			<xsl:copy-of select="Project"/>
			<xsl:apply-templates select="BugInstance"/>
			<xsl:copy-of select="BugCategory"/>
			<xsl:copy-of select="BugPattern"/>
			<xsl:copy-of select="BugCode"/>
			<!-- following 3 elements are empty in source XML,
copy anyway -->
			<xsl:copy-of select="Errors"/>
			<xsl:copy-of select="ClassFeatures"/>
			<xsl:copy-of select="History"/>			
		</xsl:element>
	</xsl:template>
	<xsl:template match="BugInstance">
		<xsl:variable name="vClassName"
select="Class[1]/@classname"/>
		<xsl:if test="contains($vClassName, 'notification')
or contains($vClassName, 'message')">
			<xsl:copy-of select="."/>
		</xsl:if>
	</xsl:template>
</xsl:stylesheet>

Now I am just trying to extend it to read config from
FunctionalAreaDef.xml and pass on the params, I
encountered apply-templates with-param failed.

Any suggestion would be appreciated, thanks.

Xiaocun

--- Michael Kay <mike@xxxxxxxxxxxx> wrote:

> You haven't shown us the source document. Perhaps
> its outermost element
> isn't called BugCollection, or perhaps it's in a
> namespace.
> 
> Michael Kay
> http://www.saxonica.com/ 
> 
> > -----Original Message-----
> > From: Xiaocun Xu [mailto:xiaocunxu@xxxxxxxxx] 
> > Sent: 27 September 2005 02:08
> > To: xsl-list
> > Subject:  apply-templates with-param failed
> > 
> > Hi,
> > 
> > I am working on splitting a FindBugs result XML
> into
> > multiple XMLs by finding keywords in
> Class/@classname.
> >  Keywords for all functional areas are defined in
> > FunctionalAreaDef.xml:
> > <Application>
> > 	<FunctionalArea name="message">
> > 		<Keywords>
> > 			<Keyword>notification</Keyword>
> > 			<Keyword>message</Keyword>
> > 		</Keywords>
> > 	</FunctionalArea> ...
> > </Application>
> > 
> > I use the following XSL to read
> FunctionalAreaDef.xml,
> > loop through each FunctionalArea element, create
> an
> > output file using the FunctioalArea/@name and pass
> > Keywords to BugCollection element(in the source
> > FindBugs XML):
> > <xsl:variable name="vFunctionalArea"
> > select="document('FunctionalAreaDef.xml')"/>
> > <xsl:template match="/">
> > 	<xsl:for-each
> >
>
select="$vFunctionalArea/Application/FunctionalArea">
> > 		<xsl:call-template
> name="splitByFunctionalAreas">
> > 			<xsl:with-param name="pFunctionalAreaDef"
> > select="."/>
> > 		</xsl:call-template>
> > 	</xsl:for-each>
> > </xsl:template>
> > <xsl:template name="splitByFunctionalAreas">
> > 	<xsl:param name="pFunctionalAreaDef" select="."/>
> > 	<xsl:variable name="vFileName"
> > select="$pFunctionalAreaDef/@name"/>
> > 	<xsl:result-document
> href="{$vFileName}_bugs.xml">
> > 		<xsl:apply-templates select="BugCollection">
> > 			<xsl:with-param name="pKeywords"
> > select="$pFunctionalAreaDef/Keywords"/>
> > 		</xsl:apply-templates>			
> > 	</xsl:result-document>
> > </xsl:template>
> > <xsl:template match="BugCollection">
> > 	<xsl:param name="pKeywords" select="."/>
> > 	<xsl:value-of select="$pKeywords"/>
> > 	...
> > 	
> > Somehow the BugCollection template did not get
> evoked
> > as <xsl:value-of select="$pKeywords"/> seems not
> > evaluated (the output file is empty with just a
> XML
> > header).  I used matching mode as well, still no
> luck.
> >  Any suggestion on what have I done wrong would be
> > much appreciated.
> > 
> > thanks,
> > Xiaocun
> > 
> > 
> > 		
> > __________________________________ 
> > Yahoo! Mail - PC Magazine Editors' Choice 2005 
> > http://mail.yahoo.com
> 
> 


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2011 All Rights Reserved.