xsl-list
[Top] [All Lists]

Re: [xsl] How would I go about changing my single quotes to double quotes in my XML output line ?

2014-11-25 16:14:26
Graydon already answered you, but you might  consider some other options as 
well:

1) change all double to single and all single to double-quotes
2) use a variable for the quote value (XSLT 1.0 and 2.0)
3) use a partial function application for the quoting fn:concat (XSLT 3.0)

Ex. of 1:
<xsl:value-of select='concat("""",../external_id[1],""""),   ....' />

Ex. of 2:
<xsl:variable name="quot" select=' """" ' />
<xsl:value-of select='concat($quot ,../external_id[1], $quot),   ....' />

Ex. of 3:
<xsl:variable name="quotate" select='concat("""", ?, """")' />
<xsl:value-of select='$quotate(,../external_id[1]),   ....' />

If you can use XSLT 3.0, the third option is probably easiest and removes some 
of the clutter caused by all the fn:concat invocations. But you can reach the 
same in XSLT 2.0 with xsl:function, it is just a bit more work. 

In addition, instead of creating such big xsl:value-of statements, consider 
splitting it up in smaller ones, using apply-templates on the nodes, or place 
them in a sequence of items. Or, in XSLT 3.0, using Content Value Templates. 
Anything that makes such large xsl:value-of statements easier to read is 
probably a good thing for maintainability of the code.

Cheers,
Abel 


From: Catherine Wilbur cwilbur(_at_)uwindsor(_dot_)ca 
[mailto:xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com] 
Sent: Thursday, November 20, 2014 11:06 PM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] How would I go about changing my single quotes to double quotes 
in my XML output line ?

Have following code in XSL stylesheet 

Have string fields I surround by single quotes.  How would I change the single 
quote to a double quote without getting a syntax error in the <xsl:value-of 
select=.  Reason I am asking is because some of my string fields might have a 
single quote embedded so I want to surround my string fields by double quotes.  
With the logic below it causes a syntax error with the <xsl:value-of select=" 
field sytax. 

Anyone have any ideas? 

                 <!-- 
                              
================================================================================================================================
 
                                Output the CSV comma delimited file with fields 
in the following order: 
                                  Seq#, UserId, Batch#, Vendor#, GLAcct, 
Invoice#, InvoiceDate, GLDate, Currency, ExchgRate, TotInvoiceAmnt, 
InvoiceLineAmnt, Attachment, PaymentTerms, Remark 
                                  
                                  Remark is a combination of the unique 
identifier (16 chars) plus the first 14 characters of the vendor code 
                                
                               "&#xa" is a line feed  (this is one we need to 
use to generate new line) 
                               "&#xD" is a carriage return 
                                
                                Note:  Amount fields and exchange rate fields 
must be written out as implied decimal fields 
                                
================================================================================================================================
 
                                --> 
                              <xsl:value-of select="position(), 
                                'LIBPROD', 
                                
local:sort-key($InvoiceCurrency,$InvoicePOLineOwner), 
                                $Derived_FISVendorNo, 
                                concat('''',../external_id[1],''''),   
                                concat('''',$inv/invoice_number[1],''''),       
                                                      
                                
concat(substring($InvoiceDateValue,5,4),substring($InvoiceDateValue,1,2),substring($InvoiceDateValue,3,2)),
 
                                $Derived_GLDateValue, 
                                $inv/invoice_amount[1]/currency[1], 
                                $Derived_ExchgRate, 
                                $Derived_InvoiceAmnt, 
                                $Derived_InvoiceLineFundAmnt, 
                                $Derived_PaymentAttachment, 
                                $Derived_PaymentTerms 
, 
                                
concat('''',$inv/unique_identifier[1],substring($inv/vendor_code[1],1,14),'''')"
 separator=","/> 
                              <xsl:text>&#xa;</xsl:text> 

_____________________________________________________________________
Catherine Wilbur 
  (E) cwilbur(_at_)uwindsor(_dot_)ca 
www.uwindsor.ca/its 
XSL-List info and archive 
EasyUnsubscribe (by email) 
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--

<Prev in Thread] Current Thread [Next in Thread>