By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
457,935 Members | 1,564 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 457,935 IT Pros & Developers. It's quick & easy.

Leave " alone in transformation

P: n/a
I have an XML file that has a free form comment field in which the
data provider, very kindly, already uses """ when writing
"doesn't", I have doesn't .

it's PERFECT, because that xml is then fed to an XSLT sheet that
transforms this text into a sql insert statement. UNFORTUNATELY, XSLT
translates doesn't into doesn't in the output, which then
destroys my sql statement. How do I tell my XSLT to leave well-enough
alone ? I know it has to be easy, but I just don't get it right now
in spite of looking online.

Also, bear in mind I'm your friendly neighborhood XSLT newbie. :)

Thanks a lot.
Nov 14 '08 #1
Share this Question
Share on Google+
3 Replies


P: n/a
Li**********@gmail.com wrote:
I have an XML file that has a free form comment field in which the
data provider, very kindly, already uses """ when writing
"doesn't", I have doesn't .

it's PERFECT, because that xml is then fed to an XSLT sheet that
transforms this text into a sql insert statement. UNFORTUNATELY, XSLT
translates doesn't into doesn't in the output, which then
destroys my sql statement. How do I tell my XSLT to leave well-enough
alone ? I know it has to be easy, but I just don't get it right now
in spite of looking online.
No, it is not easy. You can't preserve entity references when parsing
XML and using XSLT as the XSLT data model does not know any entity
references. So XSLT uses an XML parser to build its data model, an input
tree, and then transforms that input tree into a result tree. The result
tree can then optionally be serialized as XML or HTML or plain text.
If you want to ensure that certain characters are escaped with entity
references in the output the XSLT processor creates then you need to
look at processor specific extensions to do that. Or you can look into
XSLT 2.0 and character maps http://www.w3.org/TR/xslt20/#character-maps.
Note that both ways will not simply allow you to preserve entity
references in the input, instead you will create entity references in
the output.
--

Martin Honnen
http://JavaScript.FAQTs.com/
Nov 15 '08 #2

P: n/a
Martin Honnen <ma*******@yahoo.dewrites:
Li**********@gmail.com wrote:
.. . .
>... UNFORTUNATELY, XSLT
translates doesn&apos;t into doesn't in the output, which then
destroys my sql statement. How do I tell my XSLT to leave well-enough
alone ? ...
.. . .
references in the output the XSLT processor creates then you need to
look at processor specific extensions to do that. Or you can look into
XSLT 2.0 and character maps
http://www.w3.org/TR/xslt20/#character-maps. Note that both ways will
not simply allow you to preserve entity references in the input,
instead you will create entity references in the output.
I suppose sql language is not usually envisioned as a translation
target in the xml world.

Nuggets of CDATA in an xml document are not supposed to be decision
points. Nonetheless it's possible but cpu-expensive to look at
individual characters. (The expense may be reasonable in the OP's
context.)

This is why the exclusion of SDATA character entities was controversial
in early days.

-- Bill

Nov 17 '08 #3

P: n/a


"William F Hammond" <ha*****@csc.albany.eduwrote in message
news:i7************@hilbert.math.albany.edu...
Martin Honnen <ma*******@yahoo.dewrites:
>Li**********@gmail.com wrote:
. . .
>>... UNFORTUNATELY, XSLT
translates doesn&apos;t into doesn't in the output, which then
destroys my sql statement. How do I tell my XSLT to leave well-enough
alone ? ...
. . .
>references in the output the XSLT processor creates then you need to
look at processor specific extensions to do that. Or you can look into
XSLT 2.0 and character maps
http://www.w3.org/TR/xslt20/#character-maps. Note that both ways will
not simply allow you to preserve entity references in the input,
instead you will create entity references in the output.

I suppose sql language is not usually envisioned as a translation
target in the xml world.
I think it quite a common requirement though.
I just do the usual sanitisation on the SQL though, replacing a single quote
with two single quotes before running it.
If the OP is is using XSLT 2.0 it's trivial with the replace function, if
not there are plenty of example templates online that do string replacement.

--

Joe Fawcett
http://joe.fawcett.name

Nov 21 '08 #4

This discussion thread is closed

Replies have been disabled for this discussion.