XML 中不需要的新属性 - XSLT 后的输出

Unwanted new attributes in XML-output after XSLT

我想使用 XSLT 转换 XML 文件。在转换过程中,输出文件中添加了一些我无法理解的新属性。

输入XML文件(缩写):

<?xml version="1.0" encoding="UTF-8"?>
<TEI xmlns="http://www.tei-c.org/ns/1.0">
    <teiHeader>
        <fileDesc>
            <titleStmt>
                <title/>
            </titleStmt>
            <publicationStmt>
                <publisher/>
            </publicationStmt>
            <sourceDesc>
                <p/>
            </sourceDesc>
        </fileDesc>
    </teiHeader>
    <text>
        <body>
            <pb n="1"/>
            <p xml:id="uuid_f770d0a9-277a-42d5-a759-a02b05a29a49">
                <lb xml:id="uuid_cf21b2a4-e5b2-4ced-a1b2-a4e5b29ced0a"/>This is 
                <lb xml:id="uuid_dffd4def-3f7a-4d5b-bd4d-ef3f7abd5bf9"/> <rs type="person">an example</rs>.
            </p>
        </body>
    </text>
</TEI>

用于删除 <lb/><rs> 之间不需要的空格的 XSLT 样式表(上面输入文件中的第 2 行)与 Saxon PE 9.9.1.7 一起使用:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:tei="http://www.tei-c.org/ns/1.0"
  exclude-result-prefixes="xs"
  version="2.0">
  
  <xsl:output method="xml" version="1.0" indent="no"/>
    
    <xsl:template match="@* | node()" name="identity-copy">
      <xsl:copy>
        <xsl:apply-templates select="@* | node()"/>
      </xsl:copy> 
    </xsl:template>
    
    <!-- lb followed by rs -->
    <xsl:template match="text()[preceding-sibling::*[1][self::*:lb[@*]]][following-sibling::*[1][self::*:rs[@*]]][string-length(normalize-space()) = 0]"/>
  
</xsl:stylesheet>

在输出的 XML 文件中,有一些新属性被添加到我什至没有在我的样式表中提及的元素中。 例如。 @status='draft' 添加到 <revisionDesc>/<change>(不在输入示例中),@part='N' 添加到 <p>。我可以列出更多示例,但我认为这是一个普遍问题。我怎样才能避免这种情况?

提前致谢!

如果您使用的是 Saxon,则可以选择禁止扩展架构或 DTD-defined 默认属性值。 (虽然它不适用于所有 XML 解析器,但有些解析器没有此选项)。在 Oxygen“配置转换场景”对话框中,它显示有一个复选框 'Expand attribute defaults ("-expand")'。

在 Oxygen“Relax NG”首选项页面中,有一个“添加默认属性”复选框,您可以取消选中该复选框:https://www.oxygenxml.com/doc/versions/23.1/ug-editor/topics/relax-ng-preferences-page.html