Nathan,
 
Thanks so much for the insights; not quite there yet in my
understanding...
 
First things first - xalan-j-users list protocol: It appears my
deficiency relates to general XSLT knowledge. Is it appropriate to copy
the list on any follow-up questions here, even though they may not
directly relate to xalan? I'm doing so this time under the presumption
the answer is "Yes", but I also don't want to pollute inboxes with
chaff. On the other hand, I want to ensure that those who might benefit
from the exchange can do so. 
 
Second, with changes you implied in your response, I tried several
variations. I'm still missing something, probably elemental, of
importance. Additional guidance would be most welcome...
 
I now have the following, representative of all the variations I tried:

XML: (no change)
 
XSL:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
xmlns="http://www.fedex.com/schemas/freightRateQuotation";>
 <xsl:template match="/">
  <html>
   <body>
     <xsl:apply-templates select="To" />
   </body>
  </html>
 </xsl:template>
 
 <xsl:template match="To">
  To: <xsl:value-of select="."/>
 </xsl:template>
</xsl:stylesheet>
 
Actual Result:
<?xml version="1.0" encoding="UTF-8"?><html
xmlns="http://www.fedex.com/schemas/freightRateQuotation";><body/></html>
 
Logging information (from "Debugger Interface":
file:///D:/workspaces/3.5/2010-June-load/1SRC_FAX/FaxEjb/XML/rateQuoteXm
lToPdf-FO.xsl Line #3, Column #26: template match='/' 
STARTDOCUMENT
file:///D:/workspaces/3.5/2010-June-load/1SRC_FAX/FaxEjb/XML/rateQuoteXm
lToPdf-FO.xsl Line #4, Column #9: html
STARTELEMENT: html
file:///D:/workspaces/3.5/2010-June-load/1SRC_FAX/FaxEjb/XML/rateQuoteXm
lToPdf-FO.xsl Line #5, Column #10: body
file:///D:/workspaces/3.5/2010-June-load/1SRC_FAX/FaxEjb/XML/rateQuoteXm
lToPdf-FO.xsl Line #6, Column #41: apply-templates
Selected source node '#document'
file:///D:/workspaces/3.5/2010-June-load/1SRC_FAX/FaxEjb/XML/rateQuoteXm
lToPdf-FO.xsl Line #6, Column #41: apply-templates, select='null': 
     [empty node list]
STARTELEMENT: body
ENDELEMENT: body
ENDELEMENT: html
ENDDOCUMENT
 
Thanks in advance for the consideration and attention.

Tim Hibbs
FedEx Services
350 Spectrum Loop
Colorado Springs, CO 80921
719-484-2131

 

________________________________

From: Nathan Nadeau [mailto:n...@gleim.com] 
Sent: Wednesday, February 17, 2010 10:16 AM
To: Tim Hibbs
Cc: xalan-j-users@xml.apache.org
Subject: Re: Output from node traversal not processing correctly


Tim,

What's happening is you're triggering the default templates that are
provided by the XSLT processor that match element and text  nodes when
you call <xsl:apply-templates/>. There are built in rules provided by
the XSLT processor that match the different node types. The default rule
for element nodes is to simply call <xsl:apply-templates/> again on its
children nodes. The default rule for a text node is to print out the
text to the output.

So when you call <xsl:apply-templates/> in your XSL, it's actually
matching all the nodes, not just the <To> element, and it's firing the
default template for everything but the <To> element, which fires the
more specific template that matches the <To> element. This has the
effect of printing out out all the text of each of the elements.

And actually it looks like it might not be matching the <To> element
either, because it has a namespace in the source XML document that
you're not specifying in your XSL. Your namespaces need to match between
your XSL and your input XML document, otherwise the processor will not
match it.

Nathan Nadeau

Tim Hibbs wrote: 

        Hi - I'm requesting some basic assistance with an XSL processing
problem. I would think this is a simple issue to resolve, but I haven't
had much luck. 
        Any asistance would be greatly appreciated.
         
        Issue: Node contents not being output as expected.
         
        Execution Context: 
            - eclipse 3.5.1, running a 2.x EJB on a local Weblogic 10.3
server, using Java JRE jdk16.0_17
                - using eclipse Java EE Developer Tools, Oracle Weblogic
Server Tools, Oracle Common Tools
                - CLASSPATH overridden to force xalan.jar, xml-apis.jar,
serializer.jar, and xercesImpl.jar before weblogic.jar
                    - to allow instantiation of a proper
TransformerFactory (not Weblogic's version) and use of the "debugger
Interface" (http://xml.apache.org/xalan-j/usagepatterns.html#debugging)
            - Xalan-j_2_7_1
            - Input is a DOMSource, wrapping an org.w3c.dom.Document.
                - Relevant code: aTransformer.transform(aDOMSource, new
StreamResult(aFileOutputStream)); "aTransformer" is instanceof
TransformerImpl
         
        Personal Context:
            - New to XSL, Xalan. Have taken care to try all options I
can think of before soliciting for assistance here. Don't fully
understand Debugger outputs (below).
         
        Anticipated Result:
        <?xml version="1.0" encoding="UTF-8"?>
        <html>
            <body>
               To:    John Customer
            </body>
        </html>
        
        Actual Result:
        <?xml version="1.0" encoding="UTF-8"?><html>
        <body>Customer Company123 Main StreetAnytownCO80134USJohn
CustomerFedex02/02/1012:01:003031234567john.custo...@customerco.com1
12345678Salt Lake CityUT84106US</body>
        </html>
         
        XML:
        <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <tFreightRateQuotation
xmlns="http://www.fedex.com/schemas/freightRateQuotation";>
           <AccountInformation>
              <CompanyName>Customer Company</CompanyName>
              <Address1>123 Main Street</Address1>
              <City>Anytown</City>
              <State>CO</State>
              <Postal>80134</Postal>
              <Country>US</Country>
           </AccountInformation>
           <CommonData>
              <To>John Customer</To>
              <From>Fedex</From>
              <HeaderDate>02/02/10</HeaderDate>
              <HeaderTime>12:01:00</HeaderTime>
              <FaxNumber>3031234567</FaxNumber>
              <EmailAddress>john.custo...@customerco.com</EmailAddress>
           </CommonData>
           <RateQuote>
              <QuoteNumber>1 12345678</QuoteNumber>
              <OriginAddress>
                 <OriginCity>Salt Lake City</OriginCity>
                 <OriginState>UT</OriginState>
                 <OriginPostal>84106</OriginPostal>
                 <OriginCountry>US</OriginCountry>
              </OriginAddress>
           </RateQuote>
        </tFreightRateQuotation>
        
        XSL:
        <?xml version="1.0" encoding="UTF-8"?>
        <xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
            <xsl:template match="/">
                <html>
                    <body>
                        <xsl:apply-templates />
                    </body>
                </html>
            </xsl:template>
        
            <xsl:template match="To">
                    To: <xsl:value-of select="."/>
                <xsl:apply-templates/>
            </xsl:template>
        </xsl:stylesheet>
         
        Logging information (from "Debugger Interface",
http://xml.apache.org/xalan-j/usagepatterns.html#debugging
<http://xml.apache.org/xalan-j/usagepatterns.html#debugging> ):
        
file:///D:/workspaces/3.5/2010-June-load/1SRC_FAX/FaxEjb/XML/rateQuoteXm
lToPdf-FO.xsl Line #3, Column #26: template match='/' 
        STARTDOCUMENT
        
file:///D:/workspaces/3.5/2010-June-load/1SRC_FAX/FaxEjb/XML/rateQuoteXm
lToPdf-FO.xsl Line #4, Column #9: html
        STARTDOCUMENT
        STARTELEMENT: html
        
file:///D:/workspaces/3.5/2010-June-load/1SRC_FAX/FaxEjb/XML/rateQuoteXm
lToPdf-FO.xsl Line #5, Column #10: body
        
file:///D:/workspaces/3.5/2010-June-load/1SRC_FAX/FaxEjb/XML/rateQuoteXm
lToPdf-FO.xsl Line #6, Column #29: apply-templates
        Selected source node '#document'
        
file:///D:/workspaces/3.5/2010-June-load/1SRC_FAX/FaxEjb/XML/rateQuoteXm
lToPdf-FO.xsl Line #6, Column #29: apply-templates, select='null': 
             10001: tFreightRateQuotation
        null Line #0, Column #0: template match='*' 
        
file:///D:/workspaces/3.5/2010-June-load/1SRC_FAX/FaxEjb/XML/rateQuoteXm
lToPdf-FO.xsl Line #0, Column #0: apply-templates
        Selected source node 'tFreightRateQuotation'
        (default rule) apply-templates, select='null': 
             10004: AccountInformation
             10011: CommonData
             1001e: RateQuote
        null Line #0, Column #0: template match='*' 
        
file:///D:/workspaces/3.5/2010-June-load/1SRC_FAX/FaxEjb/XML/rateQuoteXm
lToPdf-FO.xsl Line #0, Column #0: apply-templates
        Selected source node 'AccountInformation'
        (default rule) apply-templates, select='null': 
             10005: CompanyName
             10007: Address1
             10009: City
             1000b: State
             1000d: Postal
             1000f: Country
        null Line #0, Column #0: template match='*' 
        
file:///D:/workspaces/3.5/2010-June-load/1SRC_FAX/FaxEjb/XML/rateQuoteXm
lToPdf-FO.xsl Line #0, Column #0: apply-templates
        Selected source node 'CompanyName'
        (default rule) apply-templates, select='null': 
             10006: #text
        STARTELEMENT: body
        CHARACTERS: Customer Company
        null Line #0, Column #0: template match='*' 
        
file:///D:/workspaces/3.5/2010-June-load/1SRC_FAX/FaxEjb/XML/rateQuoteXm
lToPdf-FO.xsl Line #0, Column #0: apply-templates
        Selected source node 'Address1'
        (default rule) apply-templates, select='null': 
             10008: #text
        CHARACTERS: 123 Main Street
        null Line #0, Column #0: template match='*' 
        
file:///D:/workspaces/3.5/2010-June-load/1SRC_FAX/FaxEjb/XML/rateQuoteXm
lToPdf-FO.xsl Line #0, Column #0: apply-templates
        Selected source node 'City'
        (default rule) apply-templates, select='null': 
             1000a: #text
        CHARACTERS: Anytown
        null Line #0, Column #0: template match='*' 
        
file:///D:/workspaces/3.5/2010-June-load/1SRC_FAX/FaxEjb/XML/rateQuoteXm
lToPdf-FO.xsl Line #0, Column #0: apply-templates
        Selected source node 'State'
        (default rule) apply-templates, select='null': 
             1000c: #text
        CHARACTERS: CO
        null Line #0, Column #0: template match='*' 
        
file:///D:/workspaces/3.5/2010-June-load/1SRC_FAX/FaxEjb/XML/rateQuoteXm
lToPdf-FO.xsl Line #0, Column #0: apply-templates
        Selected source node 'Postal'
        (default rule) apply-templates, select='null': 
             1000e: #text
        CHARACTERS: 80134
        null Line #0, Column #0: template match='*' 
        
file:///D:/workspaces/3.5/2010-June-load/1SRC_FAX/FaxEjb/XML/rateQuoteXm
lToPdf-FO.xsl Line #0, Column #0: apply-templates
        Selected source node 'Country'
        (default rule) apply-templates, select='null': 
             10010: #text
        CHARACTERS: US
        null Line #0, Column #0: template match='*' 
        
file:///D:/workspaces/3.5/2010-June-load/1SRC_FAX/FaxEjb/XML/rateQuoteXm
lToPdf-FO.xsl Line #0, Column #0: apply-templates
        Selected source node 'CommonData'
        (default rule) apply-templates, select='null': 
             10012: To
             10014: From
             10016: HeaderDate
             10018: HeaderTime
             1001a: FaxNumber
             1001c: EmailAddress
        null Line #0, Column #0: template match='*' 
        
file:///D:/workspaces/3.5/2010-June-load/1SRC_FAX/FaxEjb/XML/rateQuoteXm
lToPdf-FO.xsl Line #0, Column #0: apply-templates
        Selected source node 'To'
        (default rule) apply-templates, select='null': 
             10013: #text
        CHARACTERS: John Customer
        null Line #0, Column #0: template match='*' 
        
file:///D:/workspaces/3.5/2010-June-load/1SRC_FAX/FaxEjb/XML/rateQuoteXm
lToPdf-FO.xsl Line #0, Column #0: apply-templates
        Selected source node 'From'
        (default rule) apply-templates, select='null': 
             10015: #text
        CHARACTERS: Fedex
        null Line #0, Column #0: template match='*' 
        
file:///D:/workspaces/3.5/2010-June-load/1SRC_FAX/FaxEjb/XML/rateQuoteXm
lToPdf-FO.xsl Line #0, Column #0: apply-templates
        Selected source node 'HeaderDate'
        (default rule) apply-templates, select='null': 
             10017: #text
        CHARACTERS: 02/02/10
        null Line #0, Column #0: template match='*' 
        
file:///D:/workspaces/3.5/2010-June-load/1SRC_FAX/FaxEjb/XML/rateQuoteXm
lToPdf-FO.xsl Line #0, Column #0: apply-templates
        Selected source node 'HeaderTime'
        (default rule) apply-templates, select='null': 
             10019: #text
        CHARACTERS: 12:01:00
        null Line #0, Column #0: template match='*' 
        
file:///D:/workspaces/3.5/2010-June-load/1SRC_FAX/FaxEjb/XML/rateQuoteXm
lToPdf-FO.xsl Line #0, Column #0: apply-templates
        Selected source node 'FaxNumber'
        (default rule) apply-templates, select='null': 
             1001b: #text
        CHARACTERS: 3031234567
        null Line #0, Column #0: template match='*' 
        
file:///D:/workspaces/3.5/2010-June-load/1SRC_FAX/FaxEjb/XML/rateQuoteXm
lToPdf-FO.xsl Line #0, Column #0: apply-templates
        Selected source node 'EmailAddress'
        (default rule) apply-templates, select='null': 
             1001d: #text
        CHARACTERS: john.custo...@customerco.com
        null Line #0, Column #0: template match='*' 
        
file:///D:/workspaces/3.5/2010-June-load/1SRC_FAX/FaxEjb/XML/rateQuoteXm
lToPdf-FO.xsl Line #0, Column #0: apply-templates
        Selected source node 'RateQuote'
        (default rule) apply-templates, select='null': 
             1001f: QuoteNumber
             10021: OriginAddress
        null Line #0, Column #0: template match='*' 
        
file:///D:/workspaces/3.5/2010-June-load/1SRC_FAX/FaxEjb/XML/rateQuoteXm
lToPdf-FO.xsl Line #0, Column #0: apply-templates
        Selected source node 'QuoteNumber'
        (default rule) apply-templates, select='null': 
             10020: #text
        CHARACTERS: 1 12345678
        null Line #0, Column #0: template match='*' 
        
file:///D:/workspaces/3.5/2010-June-load/1SRC_FAX/FaxEjb/XML/rateQuoteXm
lToPdf-FO.xsl Line #0, Column #0: apply-templates
        Selected source node 'OriginAddress'
        (default rule) apply-templates, select='null': 
             10022: OriginCity
             10024: OriginState
             10026: OriginPostal
             10028: OriginCountry
        null Line #0, Column #0: template match='*' 
        
file:///D:/workspaces/3.5/2010-June-load/1SRC_FAX/FaxEjb/XML/rateQuoteXm
lToPdf-FO.xsl Line #0, Column #0: apply-templates
        Selected source node 'OriginCity'
        (default rule) apply-templates, select='null': 
             10023: #text
        CHARACTERS: Salt Lake City
        null Line #0, Column #0: template match='*' 
        
file:///D:/workspaces/3.5/2010-June-load/1SRC_FAX/FaxEjb/XML/rateQuoteXm
lToPdf-FO.xsl Line #0, Column #0: apply-templates
        Selected source node 'OriginState'
        (default rule) apply-templates, select='null': 
             10025: #text
        CHARACTERS: UT
        null Line #0, Column #0: template match='*' 
        
file:///D:/workspaces/3.5/2010-June-load/1SRC_FAX/FaxEjb/XML/rateQuoteXm
lToPdf-FO.xsl Line #0, Column #0: apply-templates
        Selected source node 'OriginPostal'
        (default rule) apply-templates, select='null': 
             10027: #text
        CHARACTERS: 84106
        null Line #0, Column #0: template match='*' 
        
file:///D:/workspaces/3.5/2010-June-load/1SRC_FAX/FaxEjb/XML/rateQuoteXm
lToPdf-FO.xsl Line #0, Column #0: apply-templates
        Selected source node 'OriginCountry'
        (default rule) apply-templates, select='null': 
             10029: #text
        CHARACTERS: US
        ENDELEMENT: body
        ENDELEMENT: html
        ENDDOCUMENT
         
        Observations:
            - Nodes seem to be traversed properly.
            - Line # and Column # don't increment after initial
apply-templates
         
        Thanks in advance for your insights!

        Tim Hibbs
        FedEx Services
        350 Spectrum Loop
        Colorado Springs, CO 80921
        719-484-2131

         


-- 
Nathan Nadeau
n...@gleim.com
Software Development
Gleim Publications, Inc.
http://www.gleim.com

Reply via email to