使用XMI中的XSLT和xml中的UML标记选择数据

时间:2013-05-15 21:58:37

标签: xml xslt uml xmi

我正在尝试使用XSLT在HTML表格中打印此XML文件,我不知道如何从XMI和UML标记中获取信息,例如XMI.headerXMI.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>

1 个答案:

答案 0 :(得分:1)

XMI.headerXMI.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">