2015-04-17 4 views
0

Я нахожу проблему с XMi тегами (пример: UML: пакет) моя реальная проблема заключается в том, что я не могу использовать для каждого цикла, с выбором опции (выберите = "UML: Пакет "). Вот входной XML-код:XMI тегов с XSLT петля

<XMI xmi.version='1.2' xmlns:UML="org.omg.xmi.namespace.UML"> 
 
    <UML:Package type="stock" exch="nyse" symbol="ZCXM" company="zacx corp" 
 
     price="28.875"/> 
 
    <UML:Package type="stock" exch="nasdaq" symbol="ZFFX" company="zaffymat inc" 
 
     price="92.250"/> 
 
    <UML:Package type="stock" exch="nasdaq" symbol="ZYSZ" company="zysmergy inc" 
 
     price="20.313"/> 
 
</XMI>

и вот мой код XSLT:

<?xml version="1.0" encoding="UTF-8"?> 
 
<xsl:stylesheet version="1.0" xmlns:UML="org.omg.xmi.namespace.UML" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
 
\t <xsl:output indent="yes" /> 
 

 
\t <xsl:template match="/"> 
 
\t \t <xmi:XMI> 
 
\t \t \t <xsl:for-each select="UML:Package"> 
 
\t \t \t \t <stock> 
 
\t \t \t \t \t <xsl:attribute name="exchange"> 
 
      <xsl:value-of select="@exch" /> 
 
     </xsl:attribute> 
 
\t \t \t \t \t <name> 
 
\t \t \t \t \t \t <xsl:value-of select="@company" /> 
 
\t \t \t \t \t </name> 
 
\t \t \t \t \t <symbol> 
 
\t \t \t \t \t \t <xsl:value-of select="@symbol" /> 
 
\t \t \t \t \t </symbol> 
 
\t \t \t \t \t <price> 
 
\t \t \t \t \t \t <xsl:value-of select="@price" /> 
 
\t \t \t \t \t </price> 
 
\t \t \t \t </stock> 
 
\t \t \t \t <hi> 
 
\t \t \t \t </hi> 
 
\t \t \t </xsl:for-each> 
 

 
\t \t </xmi:XMI> 
 
\t </xsl:template> 
 

 
</xsl:stylesheet>

и это то, что я получаю в результате:

<?xml version="1.0" encoding="UTF-8"?><XMI xmlns:UML="org.omg.xmi.namespace.UML"/>

, без erros на консоли:

10:10:19,639 INFO [main] Main - javax.xml.transform.TransformerFactory=org.apache.xalan.processor.TransformerFactoryImpl 

10: 10: 19,639 INFO [главная] Главная - java.endorsed.dirs = D: \ PFE.metadata.plugins \ org.eclipse.wst.xsl.jaxp.launching \ одобрил 10: 10: 19639 INFO [главная] Главное - LaunchFile: D: \ PFE.metadata.plugins \ org.eclipse.wst.xsl.jaxp.launching \ запуск \ launch.xml 10: 10: 19873 INFO [главный] JAXPSAXProcessorInvoker - Трансформирование ... 10: 10: 19889 INFO [главный] JAXPSAX ProcessorInvoker - Выполнено.

любая помощь?

+0

Ваш вопрос не ясен. Предоставьте достаточно кода (XML + XSLT), чтобы мы могли воспроизвести вашу проблему. –

+0

Я отредактировал мой вопрос. – Iheb

ответ

0

Ваш зарегистрированный результат: не, что я получаю от использования вашего кода. Ваша таблица стилей имеет два основных вопроса:

  1. Вы используете префикс xmi: без привязки его к пространству имен; это генерирует ошибку синтаксического анализа и результат не создается.

  2. Из контекста шаблона - то есть / корневой узел - инструкция:

    <xsl:for-each select="UML:Package"> 
    

    не выберет ничего. Она должна быть:

    <xsl:for-each select="XMI/UML:Package"> 
    
+0

и как связать xmi с пространством имен? – Iheb

+0

Добавить еще одно объявление пространства имен для вашего 'stylesheet' запуска тега, в виде' Xmlns: XMI = «whatever.their.namespace.is» '. –

+0

Спасибо, что это работает для меня. – Iheb

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