xsl-list
[Top] [All Lists]

Re: [xsl] Rebuild an element without copying defaulted attributes?

2014-08-12 11:45:48
There's no processor-independent way of preventing default attributes being 
expanded. But some XML parsers have an option to disable this.

Saxon has an option -expand:off on the command line, or 
FeatureKeys.EXPAND_ATTRIBUTE_DEFAULTS in the Java API, which switches this 
behaviour on if you're using a parser that supports it.

Michael Kay
Saxonica
mike(_at_)saxonica(_dot_)com
+44 (0) 118 946 5893




On 12 Aug 2014, at 17:22, dvint(_at_)dvint(_dot_)com 
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:

I have a situation where I need to process 4,000 DITA topics to update
them. I'm making updates which will then be included in the production
data going forward. I need to modify certain elements and pass others
through unchanged.

My problem is the unchanged.

So there is an element <pre> that has a defaulted @xml:space set to
preserve. When I rebuild this element and recreate all the existing
attributes my output now has a hard coded attribute setting.

So

   <pre ixia_locid="7">there's also the Duplicate Supplier Taxpayer ID
Number Report</pre>

became

<pre ixia_locid="7" xml:space="preserve">there's also the Duplicate
Supplier Taxpayer ID Number Report</pre>

It seems like the only way I can avoid getting the defaulted attributes
copied is to remove the reference to the DTD in all the topics. Is there
any other way to accomplish this?

Currently I'm using this template:

<xsl:template match="*">
<xsl:element name="{name(.)}">
<xsl:for-each select="@*">
   <xsl:attribute name="{name(current())}" ><xsl:value-of
select="."/></xsl:attribute>
</xsl:for-each>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>

--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--

<Prev in Thread] Current Thread [Next in Thread>