Leave " alone in transformation

L

LionelAndJen

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.
 
M

Martin Honnen

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.
 
J

Joe Fawcett

William F Hammond said:
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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,994
Messages
2,570,223
Members
46,812
Latest member
GracielaWa

Latest Threads

Top