I'm finding that including a DOCTYPE declaration in my source XML
document causes the output to contain unwanted attributes.
Stylesheet identity.xsl is a fairly standard identity transform:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/ | node() | @* | comment() | processing-instruction()">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Input file 1:
<?xml version='1.0'?>
<chapter>
<indexterm><primary>abc</primary></indexterm>
<literal>abc</literal>
</chapter>
Result of "xsltproc identity.xsl junk1" is:
<?xml version="1.0"?>
<chapter>
<indexterm><primary>abc</primary></indexterm>
<literal>abc</literal>
</chapter>
Input file 2 (same but with DOCTYPE):
<?xml version='1.0'?>
<!DOCTYPE chapter PUBLIC '-//OASIS//DTD DocBook XML V4.3//EN'
"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" >
<chapter>
<indexterm><primary>abc</primary></indexterm>
<literal>abc</literal>
</chapter>
Result of "xsltproc identity.xsl junk2" is:
<?xml version="1.0"?>
<chapter>
<indexterm significance="normal"><primary>abc</primary></indexterm>
<literal moreinfo="none">abc</literal>
</chapter>
The significance and moreinfo attributes have been added.
1) Why is this?
2) Can I suppress it? :-)