xsl-list
[Top] [All Lists]

Re: no attributes outputed when chaining transformations

2004-12-16 12:27:19
Hi Andrew,

Have you tried removing all the for-each's and replace them by:

  <xsl:copy-of select="@*" />

or something like:

  <xsl:apply-templates select="@*" />

and below the xsl:template:

  <xsl:template match="@*">
    <xsl:attribute name="{local-name()}">
      <xsl:value-of select="." />
    </xsl:attribute>
  </xsl:template>

I noticed that your input file uses a default namespace. Though you use a namespace with the testPlan element, you do not use it for accessing the attributes. Might help as well..

Cheers,
Geert

Neville Thomas wrote:

Andrew Welch wrote:

Not much to go on here, but it could be that if you generating SAX
events from the result of A->B for the input of transformation C, you
are creating a new AttributesImpl() object instead of using the existing
object (typically 'atts') in the startElement() call.  It would be less
wild speculaton if you posted the method that chains the transforms :)

Thanks for the relpy guys, becuase my files were very large I was reluctant to post them. I have sinced reduced them in size to illustrate my challenge (see below). Jarno I am using Xalan-J-2.6.0 and I have not tried any other XSLT engine. And Michael I am very new to XSL, the stylesheets themselves were generated with Altova Mapforce. The java code I use to illustrate below is a modification of the Xalan UseXMLFilters sample.

****Java Code *****:

public class MyXMLFilters
{
 public static void main(String[] args)
   throws TransformerException, TransformerConfigurationException,
        SAXException, IOException         {
     TransformerFactory tFactory = TransformerFactory.newInstance();
if (tFactory.getFeature(SAXSource.FEATURE) && tFactory.getFeature(SAXResult.FEATURE))
   {
SAXTransformerFactory saxTFactory = ((SAXTransformerFactory) tFactory); XMLFilter xmlFilter1 = saxTFactory.newXMLFilter(new StreamSource("0_map_1.xslt")); XMLFilter xmlFilter2 = saxTFactory.newXMLFilter(new StreamSource("1_map_2.xslt"));

     XMLReader reader = XMLReaderFactory.createXMLReader();
     xmlFilter1.setParent(reader);
     xmlFilter2.setParent(xmlFilter1);
     Serializer serializer = SerializerFactory.getSerializer
(OutputPropertiesFactory.getDefaultMethodProperties("xml")); serializer.setOutputStream(System.out);
     xmlFilter2.setContentHandler(serializer.asContentHandler());
     xmlFilter2.parse(new InputSource("SouthPole.xml"));
}
 }
}

****SouthPole.xml*****  <?xml version="1.0" encoding="UTF-8"?>
<testPlan baseDir="${TEST_BASE_DIR}"
   fedFile="${IBUILD_HOME}/FOM/${FED_FILE}" federationName="SIAP"
   hlaControlDir="${HLA_CONTROL}" ridFile="${RID_FILE}"
   rtiBuildType="${RTI_BUILD_TYPE}" rtiExecArgs="${RTI_ARGS}"
   rtiHome="${RTI_HOME}" testPlanName="CRSAcceptanceSouthPole"
xmlns="http://www.virtc.com"; xmlns:x0="http://www.w3.org/2001/XMLSchema";>
</testPlan>


*****Stylesheet 0_map_1.xslt***********
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:n12="http://www.virtc.com"; xmlns:att="http://www.virtc.com/att"; xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns="http://www.virtc.com/jdep/att"; exclude-result-prefixes="xs n12 att">
   <xsl:output method="xml" encoding="UTF-8"/>
   <!--xsl:param name="tpVersion" select="'1'"/-->
   <xsl:template match="/n12:testPlan">
       <testPlan>
<xsl:attribute name="xsi:schemaLocation">http://www.virtc.com/jdep/att D:/jdep/ATTCON~1/ATT_1_0_8/TestPlan.xsd</xsl:attribute>
           <xsl:for-each select="@testPlanName">
               <xsl:attribute name="testPlanName">
                   <xsl:value-of select="."/>
               </xsl:attribute>
           </xsl:for-each>
           <xsl:for-each select="@baseDir">
               <xsl:attribute name="baseDir">
                   <xsl:value-of select="."/>
               </xsl:attribute>
           </xsl:for-each>
           <!--xsl:attribute name="schemaversion">
               <xsl:value-of select="$tpVersion"/>
           </xsl:attribute-->
           <xsl:for-each select="@federationName">
               <xsl:attribute name="federationName">
                   <xsl:value-of select="."/>
               </xsl:attribute>
           </xsl:for-each>
           <xsl:for-each select="@fedFile">
               <xsl:attribute name="fedFile">
                   <xsl:value-of select="."/>
               </xsl:attribute>
           </xsl:for-each>
           <xsl:for-each select="@ridFile">
               <xsl:attribute name="ridFile">
                   <xsl:value-of select="."/>
               </xsl:attribute>
           </xsl:for-each>
           <xsl:for-each select="@rtiExecArgs">
               <xsl:attribute name="rtiExecArgs">
                   <xsl:value-of select="."/>
               </xsl:attribute>
           </xsl:for-each>
           <xsl:for-each select="@rtiHome">
               <xsl:attribute name="rtiHome">
                   <xsl:value-of select="."/>
               </xsl:attribute>
           </xsl:for-each>
           <xsl:for-each select="@rtiBuildType">
               <xsl:attribute name="rtiBuildType">
                   <xsl:value-of select="."/>
               </xsl:attribute>
           </xsl:for-each>
           <xsl:for-each select="@hlaControlDir">
               <xsl:attribute name="hlaControlDir">
                   <xsl:value-of select="."/>
               </xsl:attribute>
           </xsl:for-each>
           <xsl:for-each select="n12:preTestPlanCommand">
               <preTestPlanCommand>
                   <xsl:value-of select="."/>
               </preTestPlanCommand>
           </xsl:for-each>
       </testPlan>
   </xsl:template>
</xsl:stylesheet>



*****Stylesheet 1_map_2.xslt***********
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:n12="http://www.virtc.com/jdep/att"; xmlns="http://www.virtc.com/jdep/att"; exclude-result-prefixes="xs n12 ">
   <xsl:output method="xml" encoding="UTF-8"/>
   <!--xsl:param name="tpVersion" select="'2'"/-->
   <xsl:template match="/n12:testPlan">
       <testPlan>
<xsl:attribute name="xsi:schemaLocation">http://www.virtc.com/jdep/att C:/cvsroot/iBuild/jdep/ATT/dist/TestPlan.xsd</xsl:attribute>
           <xsl:for-each select="@testPlanName">
               <xsl:attribute name="testPlanName">
                   <xsl:value-of select="."/>
               </xsl:attribute>
           </xsl:for-each>
           <!--xsl:attribute name="schemaversion">
               <xsl:value-of select="$tpVersion"/>
           </xsl:attribute-->
           <xsl:for-each select="@baseDir">
               <xsl:attribute name="baseDir">
                   <xsl:value-of select="."/>
               </xsl:attribute>
           </xsl:for-each>
           <xsl:for-each select="@federationName">
               <xsl:attribute name="federationName">
                   <xsl:value-of select="."/>
               </xsl:attribute>
           </xsl:for-each>
           <xsl:for-each select="@fedFile">
               <xsl:attribute name="fedFile">
                   <xsl:value-of select="."/>
               </xsl:attribute>
           </xsl:for-each>
           <xsl:for-each select="@ridFile">
               <xsl:attribute name="ridFile">
                   <xsl:value-of select="."/>
               </xsl:attribute>
           </xsl:for-each>
           <xsl:for-each select="@rtiExecArgs">
               <xsl:attribute name="rtiExecArgs">
                   <xsl:value-of select="."/>
               </xsl:attribute>
           </xsl:for-each>
           <xsl:for-each select="@rtiHome">
               <xsl:attribute name="rtiHome">
                   <xsl:value-of select="."/>
               </xsl:attribute>
           </xsl:for-each>
           <xsl:for-each select="@rtiBuildType">
               <xsl:attribute name="rtiBuildType">
                   <xsl:value-of select="."/>
               </xsl:attribute>
           </xsl:for-each>
           <xsl:for-each select="@hlaControlDir">
               <xsl:attribute name="hlaControlDir">
                   <xsl:value-of select="."/>
               </xsl:attribute>
           </xsl:for-each>
           <xsl:for-each select="@hlaResultsDir">
               <xsl:attribute name="hlaResultsDir">
                   <xsl:value-of select="."/>
               </xsl:attribute>
           </xsl:for-each>
           <xsl:for-each select="@hlaResultsHost">
               <xsl:attribute name="hlaResultsHost">
                   <xsl:value-of select="."/>
               </xsl:attribute>
           </xsl:for-each>
           <xsl:for-each select="@hlaEvalDir">
               <xsl:attribute name="hlaEvalDir">
                   <xsl:value-of select="."/>
               </xsl:attribute>
           </xsl:for-each>
           <xsl:for-each select="@hlaEvalHost">
               <xsl:attribute name="hlaEvalHost">
                   <xsl:value-of select="."/>
               </xsl:attribute>
           </xsl:for-each>
       </testPlan>
   </xsl:template>
</xsl:stylesheet>


Kindly
Nev





--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--




--
Geert(_dot_)Josten(_at_)Daidalos(_dot_)nl
IT-consultant at Daidalos BV, Zoetermeer (NL)

http://www.daidalos.nl/
tel:+31-(0)79-3316961
fax:+31-(0)79-3316464

GPG: 1024D/12DEBB50

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--