2013-05-15 4 views
0

Я пытаюсь напечатать этот XML-файл в таблице HTML, используя XSLT, и я не знаю, как получить информацию из тегов XMI и UML, например XMI.header или XMI.exporter.Выберите данные с XSLT из тегов XMI и UML в xml

Я знаю, как получить атрибуты из корневого тега 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> 
+0

Это хороший ресурс, чтобы узнать XSLT http://www.w3schools.com/xsl/default. asp. Кстати, вы можете использовать нотацию select = "/ XMI.header/XMI.documentation/XMI.exporter" в шаблоне – emecas

+0

Ваши данные XML недействительны. Предположительно, тег '' в конце принадлежит перед тегом ''? – Borodin

ответ

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"> 
+0

спасибо, что работает супер! знак равно – Frixzon

 Смежные вопросы

  • Нет связанных вопросов^_^