Subject:XML tag indentation engine and general entities Author:Iouri Leonov Date:09 Aug 2004 05:34 PM
Hi,
I have a problem with Stylus Studio 5.3, build 179i. This problem relates to how XML tag indentation engine treats general entities.
I have Constants.dtd where I am storing values shared by many stylesheets. In that file I put entities like that:
<!ENTITY nbsp " ">
<!ENTITY INVALID_SEGMENT "Message contains invalid segment">
...
Then in each xsl stylesheet I declare location of constants in doctype
<!DOCTYPE my_constants [
<!ENTITY % constants SYSTEM "../util/Constants.dtd">
%constants;]>
Next in a stylesheet I am referencing entities:
...
<xsl:with-param name="message">&INVALID_SEGMENT; <xsl:value-of select="$segment"/>.</xsl:with-param>
...
Everything runs OK until I hit 'Indent XML Tags' button.
Indentation engine wipes out my entity references and substitutes entity nbsp with its value   The same line looks like this:
...
<xsl:with-param name="message"> <xsl:value-of select="$segment"/>.</xsl:with-param>
...
Understandably, this is not what I want.
I checked the same code on XML Spy and there is no problem - all my entities stay intact.
I am wondering whether this is a matter of some configuration in the indentation engine which I am not aware of, or is it really a bug?
Well, I hate to continue on XMLSpy yet I cannot afford loosing my messages
every time I am trying to indent xsl stylesheet.
Subject:XML tag indentation engine and general entities Author:Iouri Leonov Date:15 Aug 2004 11:08 AM
OK,
I've done most of my stuff on XMLSpy and now can address the same issue
for Stylus Studio (Generally I prefer Stylus over Spy).
Here is a sample illustrating XML indentation engine bug in
Stylus Studio 5.3 b179i. See atached IndentationEngineBug.zip.
Driver.xml has general entities &DO_YOU_SEE_ME; and .
These entities are defined in Constants.dtd.
Everything works fine unless you hit Indent XML Tags
button. Stylus Studid substitutes with its value   which I can live with.
BUT it completely obliterates &DO_YOU_SEE_ME; . Brrr!!!
I checked this stuff on XMLSpy and it's work perfectly there.
Something should be done on the Stylus Studio side.
Subject:XML tag indentation engine and general entities Author:Ivan Pedruzzi Date:15 Aug 2004 04:26 PM
Hi Iouri,
Thank you for the test case.
Note that the problem affects the XSLT editor only.
As work around you can open the XSLT document using the XML Editor and perform the indent from there.
Subject:XML tag indentation engine and general entities Author:Iouri Leonov Date:15 Aug 2004 09:41 PM
Hi Ivan,
Sorry for might ba a silly question but how to open xsl document in xml editor?
I am clicking in Project pane document and Studio opens it as xsl.
Still I do hope that in future releases of the Stylus Studio I would
be able to work with entites without workaround just like in XMLSpy and
preferably better. Right?
Subject:XML tag indentation engine and general entities Author:Ivan Pedruzzi Date:15 Aug 2004 09:53 PM
Indeed we are working to fix the problem.
To open a file using a different editor, use the open file dialog, select the XSLT file you would like to open the click the black arrow near the "open" button you will see a list of editors, click on XML Editor.
Note that you can browse the project files from inside the Open file dialog just clicking on "project files" button on the left bar.
Subject:XML tag indentation engine and general entities Author:Iouri Leonov Date:15 Aug 2004 11:25 PM
>The XSLT Indenter fails to
>resolve the entity because it
>doesn't resolve the DTD
>relative path.
>IF you use the full path
>things should work fine.
>
>The nbsp is automatically
>recognized.
>
>Ivan
Well, Spy does not care whether it is relative or absolute path for DTD.
Plus in a real application it is not a good idea having absolute path, is it?
Subject:XML tag indentation engine and general entities Author:Minollo I. Date:16 Aug 2004 12:16 AM
...
>Well, Spy does not care whether it is relative or
>absolute path for DTD.
>Plus in a real application it is not a good idea having
>absolute path, is it?
Iouri,
the behavior you are observing is clearly a bug on which we will work on before the next public update. Ivan was just describing a workaround to address your issue before a software fix is available.