All,
 
I'm soliciting some validation of my approach to developing XSL for a
project I'm working on after receiving some very welcome help yesterday.
 
Questions:

1.      In the XSL below, is it a reasonable approach to discard
"unwanted" text nodes with the template
        
         <xsl:template match="frq:From | frq:HeaderDate | frq:HeaderTime
| frq:FaxNumber">
         </xsl:template>?
        

        *       Is there a better way to do this?
        *       Must this be done element-by-element, or is there a
"shorthand" way of eliminating a set of sibling nodes via XPath
expression?

2.      Given the inclusion of the namespace specifier
"xmlns:frq="http://www.fedex.com/schemas/freightRateQuotation"; in the
XSL, must all references to nodes in that namespace always be preceded
with "frq:" wherever they are referenced (such as in xsl:template
match="..." statements)?
3.      I'd like to "left align" the "To:" and "Email Address:" lines in
my output. Is there a defined set of output formatting rules in XSL
(which in particular defines how output lines are indented)? As
suggested yesterday by Michael Ludwig, I included an "<xsl:output
method="html" indent="yes"/>" line, but that doesn't seem to impact
other than the HTML syntax elements.

 
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:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
xmlns:frq="http://www.fedex.com/schemas/freightRateQuotation";
exclude-result-prefixes="frq">
 <xsl:output method="html" indent="yes"/>
 <xsl:template match="frq:tFreightRateQuotation">
  <html>
   <body>
   <!--Add a newline-->
    <xsl:text>
    </xsl:text>
    
    <xsl:apply-templates select="frq:CommonData"/>
   <!--Add a newline-->
    <xsl:text>
    </xsl:text>
 
   </body>
  </html>
 </xsl:template>
 
 <xsl:template match="frq:To">
  <xsl:text> To: </xsl:text>
  <xsl:value-of select="."/>
  <!--Add a newline-->
  <xsl:text>
  </xsl:text>
 </xsl:template>
 
 <xsl:template match="frq:From | frq:HeaderDate | frq:HeaderTime |
frq:FaxNumber">
 </xsl:template>
 
 <xsl:template match="frq:EmailAddress">
  <xsl:text> Email Address: </xsl:text>
  <xsl:value-of select="." />
 </xsl:template>
</xsl:stylesheet>
 
Resulting Output:
<html>
<body>
     To: John Customer
   Email Address: john.custo...@customerco.com
    </body>
</html>
 
Thanks in advance for your time and advice. It's been very encouraging.

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

 

Reply via email to