This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Ignoring default attributes during XSL transform


Manny,

Joerg was correct when he said that the parser has provided the default 
value before the XSLT processor sees the attribute, so the XSLT processor 
has no way of knowing whether an attribute given it has its value because 
it was explicit in the source, or because it was provided by default.

So the short answer is, if you are willing to hard code your stylesheet 
with the default as a literal (or provide it as a parameter), you can do 
what you want; but there is no way to test directly whether a given 
attribute appears as a literal in the source document. For this, you're 
simply out of luck, since the information in the DTD declarations is simply 
not part of the data model that the XSLT processor has.

(For those interested in strange arcana of why bizarre syntax is the way it 
is: the DTD syntax saying an attribute is #IMPLIED, rather than, say, 
#OPTIONAL, was meant to express, as I understand it, that a default could 
be provided by a processor (or stylesheet) but was not provided by the DTD.)

So: you can, in effect, test against attribute value "defaults" provided in 
the stylesheet which *happen* to match those in the DTD; but that's the 
best you can do.

XML-based schema languages such as XML Schema and RNG allow, in principle, 
XSLT to query the schema directly -- though even there (as Jeni reminded me 
not long ago) the various ways it might be done are so numerous that a 
general solution may be unlikely. :-(

Cheers,
Wendell

At 09:51 AM 4/18/2002, you wrote:
>Correct, that I understand. But I am wondering if there is a way to 
>compare the value in the tree with an attribute's default value defined in 
>the DTD. Something like this:
>
><xsl:apply-templates select="*@[. !=  '{attribute's default val}']"/>
>
>I would like to only output the attributes which are not the default value 
>to make the outputted xml more readable. I have about 30 attributes but 
>most of then are just set to their default values.
>
>Thank You,
>Manny
>
>At 12:23 PM 4/18/2002 +0200, Joerg Heinicke wrote:
>>As far as I know, the default value (from DTD) of attributes are added by 
>>the parser (please correct me if I'm wrong). So when the stylesheet gets 
>>the document, every attribute is in the XML tree. But the stylesheet 
>>knows nothing about whether it's a default value - the attribute is in 
>>the tree, not more, not less.
>>
>>Regards,
>>
>>Joerg
>>
>>Manny Parasirakis wrote:
>>>My follow on question is whether or not there is a way to compare an 
>>>attribute value to its default value defined in the DTD?
>>>At 10:02 PM 4/17/2002 +0200, Joerg Heinicke wrote:
>>>
>>>><xsl:apply-templates select="* | @*[. != '']">
>>>>
>>>>Regards,
>>>>
>>>>Joerg
>>>>
>>>>Manny Parasirakis wrote:
>>>>
>>>>>I am trying to figure out how I can ignore outputting attributes whose 
>>>>>values are not set (=""). I am fairly new at this but cannot figure it 
>>>>>out. I need to do this for all XML tags. Here is my XSL:
>>>>><xsl:template match="*|@*">
>>>>>         <xsl:copy>
>>>>>                 <xsl:apply-templates select="*|@*"/>
>>>>>         </xsl:copy>
>>>>></xsl:template>
>>>>>I've tried a bunch of things but cannot figure this out.
>>
>>--
>>
>>System Development
>>VIRBUS AG
>>Fon  +49(0)341-979-7419
>>Fax  +49(0)341-979-7409
>>joerg.heinicke@virbus.de
>>www.virbus.de
>>
>>
>>XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
>
>
>XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


======================================================================
Wendell Piez                            mailto:wapiez@mulberrytech.com
Mulberry Technologies, Inc.                http://www.mulberrytech.com
17 West Jefferson Street                    Direct Phone: 301/315-9635
Suite 207                                          Phone: 301/315-9631
Rockville, MD  20850                                 Fax: 301/315-8285
----------------------------------------------------------------------
   Mulberry Technologies: A Consultancy Specializing in SGML and XML
======================================================================


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]