0

我正在尝试使用 out of XSLT 在 HTML 表中打印此 XML 文件,但我不知道如何从 XMI 和 UML 标签中获取信息,例如XMI.headeror XMI.exporter

我知道如何从根标签 XMI 而不是其他标签下获取属性。

XML 文档

<XMI xmi.version="1.2"
    xmlns:UML="org.omg.xmi.namespace.UML"
    timestamp="Wed Apr 21 18:15:34 CEST 2010">

  <XMI.header>
    <XMI.documentation>
      <XMI.exporter>
        ArgoUML (using Netbeans XMI Writer version 1.0)
      </XMI.exporter>
      <XMI.exporterVersion>0.30(6) revised on $Date: 2010-01-11 22:20:14 +0100 (Mon, 11 Jan 2010) $
      </XMI.exporterVersion>
    </XMI.documentation>
    <XMI.metamodel xmi.name="UML" xmi.version="1.4"/>
  </XMI.header>

  <XMI.content>
    <UML:Multiplicity xmi.id="-64--88-0--57--53f31703:128211b208a:-8000:0000000000000DDF">
      <UML:Multiplicity.range>
    <UML:MultiplicityRange xmi.id="-64--88-0--57--53f31703:128211b208a:-8000:0000000000000DE0"
      lower="1" upper="1"/>
      </UML:Multiplicity.range>
  </XMI.content>

</XMI>

</UML:Multiplicity>

XSLT 代码

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:template match="/">
    <xsl:apply-templates/>
</xsl:template>

<xsl:template match="XMI">
    XMI Version: <xsl:value-of select="./@xmi.version"/>
    <br/>
    Generated: <xsl:value-of select="./@timestamp"/>
    <br/>
</xsl:template>

</xsl:stylesheet>
4

1 回答 1

1

XMI.header并且XMI.exporter只是普通的 XML 标记名称。在 ASCII 范围内,初始字符必须是字母数字或下划线,但之后名称可以包括句号和连字符。所以就

<xsl:template match="XMI.header">

会为你工作。

这些UML名称略有不同,因为UML它是一个名称空间,并且必须在 XSLT 样式表的顶部声明。所以你需要

<xsl:stylesheet version="1.0"
    xmlns:UML="org.omg.xmi.namespace.UML"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

之后您可以直接使用名称,例如

<xsl:template match="UML:Multiplicity">
于 2013-05-16T11:02:08.747 回答