You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-users@xmlgraphics.apache.org by Fabrizio Caldas <fn...@hotmail.com> on 2005/07/27 23:57:37 UTC
embedding output escaping
Hello everyone,
This question has probably come up before, but couldn't find it in the
archives
I want to disable output escaping.
Here's an example:
public static ObjXml createSampleObj() {
ObjXml obj = new ObjXml();
obj.setTitle("<a href=\"http://www.sample.com\">Sample Title</a>");
}
public static void main(String[] args) {
app.convertObj2XML(obj, "C:\\xmlfile.xml");
app.convertObj2PDF(obj, "C:\\pdffile.pdf");
}
The xml output is '<';a href="http://www.sample.com"'>';Sample
Title'<';/a>';
And on the PDF its just text not a link.
Does anyone know how to escape this?
Fabrizio.
_________________________________________________________________
Chegou o que faltava: MSN Acesso Grátis. Instale Já!
http://www.msn.com.br/discador
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
Re: embedding output escaping
Posted by Andreas L Delmelle <a_...@pandora.be>.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On Jul 28, 2005, at 18:42, Fabrizio Caldas wrote:
> But in my case I have hrefs mixed with plain text.
<snip />
> I don't know exactly what that string is, but I know it might have
> hrefs.
> So my XML, if I was creating one, would look like this:
> <title>some text <a href="http://sample.com">click</a> more
> text</title>
<snip />
> In that case I would have to parse the string I'm getting from a
> properties file.
Yep, but there are a number of ways to go about that. Maybe only the
generateFor() method needs to be altered. (other options include:
modifying the type of the title member variable from a simple String to
a composite object or a collection of Strings, but then the setTitle()
method needs to be changed as well...)
If you know how to use java.util.regex (or any other regexp library)
then it should be pretty straightforward to match character data and
sub-elements, and emit the proper SAX events based on the results...
> I was trying to avoid that.
Yes, that was obvious, but: Sorry, no can do :-)
The explanation is that if you use the default generateFor()
implementation, the title string will be entirely read into a character
array --including any markup characters. Then a characters() event is
emitted by the ContentHandler, and the parser implementation will
gladly take care of generating entity references for any &, <, >, " and
'.
Short of rewriting the parser to emit element events whenever it
receives markup characters through a characters() event, your only
option is indeed to parse the string yourself. If it's any consolation:
rewriting the parser would definitely be more complicated than this.
:-)
Greetz,
AD
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (Darwin)
iD8DBQFC6XzMyHTbFO9b8aARAv7oAKCtT59yYXpudwuAyBOIRYb2qFb1hwCg22va
Mm5ioWcnboCiHB7q/jIsq/w=
=zqTB
-----END PGP SIGNATURE-----
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
Re: embedding output escaping
Posted by "J.Pietschmann" <j3...@yahoo.de>.
Fabrizio Caldas wrote:
> In that case I would have to parse the string I'm getting from a
> properties file.
> I was trying to avoid that.
I don't think you can avoid that.
If you feed an XML API a string, it will be treated as plain
text, no matter how hard you wish the machinery would magically
detect markup and handle it accordingly.
J.Pietschmann
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
Re: embedding output escaping
Posted by Fabrizio Caldas <fn...@hotmail.com>.
Ok. I see where you're coming from.
But in my case I have hrefs mixed with plain text.
So my setTitle might look something like this.
setTitle(String_From_Properties);
I don't know exactly what that string is, but I know it might have hrefs.
So my XML, if I was creating one, would look like this:
<title>some text <a href="http://sample.com">click</a> more text</title>
And the XSLT would be:
<xsl:template match="title">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="a">
<fo:basic-link color="blue" external-destination="url({@href})">
<xsl:value-of select="."/>
</fo:basic-link>
</xsl:template>
Since I'm matching <a> I would like it to be in the XML.
Now making it appear in the XML is solved.
When I create the FO from that XML it also works.
But when I skip the XML/FO and go straight from Obj to PDF, it gets written
as text.
But I see your point.
In that case I would have to parse the string I'm getting from a properties
file.
I was trying to avoid that.
Regards,
>From: Andreas L Delmelle <a_...@pandora.be>
>Reply-To: fop-users@xmlgraphics.apache.org
>To: fop-users@xmlgraphics.apache.org
>Subject: Re: embedding output escaping
>Date: Thu, 28 Jul 2005 18:24:34 +0200
>
>-----BEGIN PGP SIGNED MESSAGE-----
>Hash: SHA1
>
>On Jul 28, 2005, at 16:56, Fabrizio Caldas wrote:
>
>Hi,
>
>>I got the escape working for the XML, you're right about being in the
>>XMLReader.java that I need to make this change.
>>
>>In the first generateFor() method that I have I included a call to
>>
>>handler.processingInstruction(Result.PI_DISABLE_OUTPUT_ESCAPING,null);
>>
>>This disables output escaping when creating the xml with the
>>ExampleObj2XML.
>>
>>But when I transform to PDF using the ExampleObj2PDF the escaping does not
>>work.
>
>Well, I still think you don't need to do any escaping (or disable escaping
>for that matter).
>
>If you need to have:
><fo:basic-link external-destination="url">Click here</fo:basic-link>
>
>There are two things to take into account:
>- - our example embedding.tools.AbstractObjectReader doesn't activate
>namespace support
>- - and it does not offer any support for attributes
>
>You basically have two options:
>1) modify the code for AbstractObjectReader to allow namespaces and
>attributes (or override the relevant methods in a subclass)
>2) generate semantic XML from your object, then transform it via XSLT to FO
>
>For 2), the scenario would look something like:
>* use a method similar to setTitle() to set/store the strings for the
>destination URL and "Click here". For example store it in member variables
>named linkContent and linkDest (and provide getXXX() methods to retrieve
>them)
>
>* then, in your XMLReader in the generateFor() method that will process
>your object, you create the result element roughly as follows:
>...
>handler.startElement("link");
>handler.element("destination",obj.getLinkDest());
>handler.element("content",obj.getLinkContent());
>handler.endElement("link");
>...
>
>You will then get XML output like this:
>
><link>
> <destination>URL</destination>
> <content>Click here</content>
></link>
>
>This fragment can be transformed by an XSL template:
>
><xsl:template match="link">
> <fo:basic-link external-destination="{destination}">
> <xsl:value-of select="content" />
> </fo:basic-link>
></xsl:template>
>
>HTH!
>
>Greetz,
>
>AD
>-----BEGIN PGP SIGNATURE-----
>Version: GnuPG v1.4.1 (Darwin)
>
>iD8DBQFC6QbLyHTbFO9b8aARAvJjAKCMLiPYet/aCXFS7JBEg1RGBRf2GQCdHA74
>+HKtu2LMlsYDDGy4KRKQ2XU=
>=Gu0x
>-----END PGP SIGNATURE-----
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
>For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
>
_________________________________________________________________
MSN Messenger: converse online com seus amigos .
http://messenger.msn.com.br
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
Re: embedding output escaping
Posted by Andreas L Delmelle <a_...@pandora.be>.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On Jul 28, 2005, at 16:56, Fabrizio Caldas wrote:
Hi,
> I got the escape working for the XML, you're right about being in the
> XMLReader.java that I need to make this change.
>
> In the first generateFor() method that I have I included a call to
>
> handler.processingInstruction(Result.PI_DISABLE_OUTPUT_ESCAPING,null);
>
> This disables output escaping when creating the xml with the
> ExampleObj2XML.
>
> But when I transform to PDF using the ExampleObj2PDF the escaping does
> not work.
Well, I still think you don't need to do any escaping (or disable
escaping for that matter).
If you need to have:
<fo:basic-link external-destination="url">Click here</fo:basic-link>
There are two things to take into account:
- - our example embedding.tools.AbstractObjectReader doesn't activate
namespace support
- - and it does not offer any support for attributes
You basically have two options:
1) modify the code for AbstractObjectReader to allow namespaces and
attributes (or override the relevant methods in a subclass)
2) generate semantic XML from your object, then transform it via XSLT
to FO
For 2), the scenario would look something like:
* use a method similar to setTitle() to set/store the strings for the
destination URL and "Click here". For example store it in member
variables named linkContent and linkDest (and provide getXXX() methods
to retrieve them)
* then, in your XMLReader in the generateFor() method that will process
your object, you create the result element roughly as follows:
...
handler.startElement("link");
handler.element("destination",obj.getLinkDest());
handler.element("content",obj.getLinkContent());
handler.endElement("link");
...
You will then get XML output like this:
<link>
<destination>URL</destination>
<content>Click here</content>
</link>
This fragment can be transformed by an XSL template:
<xsl:template match="link">
<fo:basic-link external-destination="{destination}">
<xsl:value-of select="content" />
</fo:basic-link>
</xsl:template>
HTH!
Greetz,
AD
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (Darwin)
iD8DBQFC6QbLyHTbFO9b8aARAvJjAKCMLiPYet/aCXFS7JBEg1RGBRf2GQCdHA74
+HKtu2LMlsYDDGy4KRKQ2XU=
=Gu0x
-----END PGP SIGNATURE-----
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
Re: embedding output escaping
Posted by Fabrizio Caldas <fn...@hotmail.com>.
I got the escape working for the XML, you're right about being in the
XMLReader.java that I need to make this change.
In the first generateFor() method that I have I included a call to
handler.processingInstruction(Result.PI_DISABLE_OUTPUT_ESCAPING,null);
This disables output escaping when creating the xml with the ExampleObj2XML.
But when I transform to PDF using the ExampleObj2PDF the escaping does not
work.
Still trying....
Regards,
>From: Andreas L Delmelle <a_...@pandora.be>
>Reply-To: fop-users@xmlgraphics.apache.org
>To: fop-users@xmlgraphics.apache.org
>Subject: Re: embedding output escaping
>Date: Thu, 28 Jul 2005 02:33:59 +0200
>
>-----BEGIN PGP SIGNED MESSAGE-----
>Hash: SHA1
>
>On Jul 27, 2005, at 23:57, Fabrizio Caldas wrote:
>
>Hi,
>
>>This question has probably come up before, but couldn't find it in the
>>archives. I want to disable output escaping.
>>
>>Here's an example:
>>public static ObjXml createSampleObj() {
>> ObjXml obj = new ObjXml();
>>
>> obj.setTitle("<a href=\"http://www.sample.com\">Sample Title</a>");
>>}
>>
>>public static void main(String[] args) {
>> app.convertObj2XML(obj, "C:\\xmlfile.xml");
>> app.convertObj2PDF(obj, "C:\\pdffile.pdf");
>>}
>>
>>The xml output is '<';a href="http://www.sample.com"'>';Sample
>>Title'<';/a>'; And on the PDF its just text not a link.
>>
>
>First things first: Neither in PDF nor in XSL-FO can this be considered a
>link, since after all, it IS an HTML element.
>
>The correct FO syntax that corresponds to this HTML :
>
><a href="...">Click here</a>
>
>is
>
><fo:basic-link external-destination="...">Click here</fo:basic-link>
>
>>Does anyone know how to escape this?
>
>Not exactly, nor do I believe you really need to. I think your problem is
>caused by the internals of the methods ObjXml.setTitle() and
>app.convertObj2XML().
>Presumably, the first stores the text as a java.lang.String member variable
>of the object in question, while the second writes that String to the
>output XML file --as text, so escaping the usual markup characters and/or
>quotes.
>(Analogous to our own embedding example: in ProjectTeam.java, the
>setProjectName() method is only used to store the name as a String. If you
>look at ProjectTeamXMLReader.java, you will see that ultimately a new
>projectname-element is created and the name is only used as its content.)
>
>I have a feeling the setTitle() method is incorrectly being used. You
>expect it to magically transform character data containing markup - --HTML
>markup no less-- to a FO element in the output file.
>If you just take a closer look at that embedding example, I think you'll be
>able to figure it out. If not, just yell.
>
>
>HTH!
>
>Greetz,
>
>AD
>-----BEGIN PGP SIGNATURE-----
>Version: GnuPG v1.4.1 (Darwin)
>
>iD8DBQFC6CgFyHTbFO9b8aARAljVAKC7zzh2HdZoa3qC4ustw992bmAd1wCgvBYr
>9CKrDkObMtStVVQPy+o34Uo=
>=fU8S
>-----END PGP SIGNATURE-----
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
>For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
>
_________________________________________________________________
Chegou o que faltava: MSN Acesso Grátis. Instale Já!
http://www.msn.com.br/discador
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
Re: embedding output escaping
Posted by Andreas L Delmelle <a_...@pandora.be>.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On Jul 27, 2005, at 23:57, Fabrizio Caldas wrote:
Hi,
> This question has probably come up before, but couldn't find it in the
> archives. I want to disable output escaping.
>
> Here's an example:
> public static ObjXml createSampleObj() {
> ObjXml obj = new ObjXml();
>
> obj.setTitle("<a href=\"http://www.sample.com\">Sample Title</a>");
> }
>
> public static void main(String[] args) {
> app.convertObj2XML(obj, "C:\\xmlfile.xml");
> app.convertObj2PDF(obj, "C:\\pdffile.pdf");
> }
>
> The xml output is '<';a href="http://www.sample.com"'>';Sample
> Title'<';/a>'; And on the PDF its just text not a link.
>
First things first: Neither in PDF nor in XSL-FO can this be considered
a link, since after all, it IS an HTML element.
The correct FO syntax that corresponds to this HTML :
<a href="...">Click here</a>
is
<fo:basic-link external-destination="...">Click here</fo:basic-link>
> Does anyone know how to escape this?
Not exactly, nor do I believe you really need to. I think your problem
is caused by the internals of the methods ObjXml.setTitle() and
app.convertObj2XML().
Presumably, the first stores the text as a java.lang.String member
variable of the object in question, while the second writes that String
to the output XML file --as text, so escaping the usual markup
characters and/or quotes.
(Analogous to our own embedding example: in ProjectTeam.java, the
setProjectName() method is only used to store the name as a String. If
you look at ProjectTeamXMLReader.java, you will see that ultimately a
new projectname-element is created and the name is only used as its
content.)
I have a feeling the setTitle() method is incorrectly being used. You
expect it to magically transform character data containing markup
- --HTML markup no less-- to a FO element in the output file.
If you just take a closer look at that embedding example, I think
you'll be able to figure it out. If not, just yell.
HTH!
Greetz,
AD
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (Darwin)
iD8DBQFC6CgFyHTbFO9b8aARAljVAKC7zzh2HdZoa3qC4ustw992bmAd1wCgvBYr
9CKrDkObMtStVVQPy+o34Uo=
=fU8S
-----END PGP SIGNATURE-----
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org