是否有任何函数可以格式化xslt文件。我想他可能会在开始时使用某个地方。我的问题是什么?
我创建了基本的 xslt:
...<xsl:template name="model" match="uml:Model">
<xsl:element name="uml:Model">
<xsl:attribute name="xmi:type">
<xsl:value-of select="@xmi:type"/>
</xsl:attribute>
<xsl:attribute name="name">
<xsl:value-of select="@name" />
</xsl:attribute>
<xsl:attribute name="visibility">
<xsl:value-of select="@visibility" />
</xsl:attribute>
<xsl:apply-templates />
</xsl:element>
</xsl:template>
<xsl:template match="packagedElement[@xmi:type='uml:Package']">
<xsl:element name="packagedElement">
<xsl:attribute name="xmi:type">uml:Package</xsl:attribute>
<xsl:attribute name="xmi:id">
<xsl:value-of select="@xmi:id"></xsl:value-of>
</xsl:attribute>
<xsl:attribute name="name">sequenceD</xsl:attribute>
<xsl:attribute name="visibility">public</xsl:attribute>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>...
在第一个模板中,一切都很好,元素的属性在一行中。在每个下一个元素中,都有自己的行中的属性。我不知道为什么。这是 XML 输出:
<uml:Model xmi:type="uml:Model" name="EA_Model" visibility="public">
<packagedElement xmi:type="uml:Package"
xmi:id="EAPK_9E00FA41_6F28_4e47_9AE6_2A04EE92CDBB"
name="sequenceD"
visibility="public"/>
</uml:Model>
这就是我所期待的:
<uml:Model xmi:type="uml:Model" name="EA_Model" visibility="public">
<packagedElement xmi:type="uml:Package" xmi:id="EAPK_9E00FA41_6F28_4e47_9AE6_2A04EE92CDBB" name="sequenceD" visibility="public">
<packagedElement xmi:type="uml:Collaboration" xmi:id="EAID_AC000001_6F28_4e47_9AE6_2A04EE92CDBB" name="EA_Collaboration1" visibility="public">
</packageElement>
</packageElement>
</uml:Model>
我还尝试将自己的文本添加到第一个模板中,就像在第二个模板中一样,但结果相同。在 xml 中,第一个元素在一行中具有属性。有什么帮助吗?谢谢。
如果您使用的是 Saxon,并指定 indent="yes",则如果行长度超过某个阈值,则属性将拆分为多行以提高可读性:indent="yes" 的声明目的是使人类更容易阅读输出,而需要水平滚动的长行通常被认为会导致可读性差。
Saxon(PE 及更高版本(允许您使用 saxon:line-length
序列化属性控制最大行长度,您可以在 xsl:output
上与 indent="yes"
一起指定该属性。