我发现xmi标签存在问题(例如:UML:Package)我真正的问题是我无法使用select选项进行每个循环(select =" UML :包")。 这是XML输入代码:
<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>
&#13;
这是我的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">
<xsl:output indent="yes" />
<xsl:template match="/">
<xmi:XMI>
<xsl:for-each select="UML:Package">
<stock>
<xsl:attribute name="exchange">
<xsl:value-of select="@exch" />
</xsl:attribute>
<name>
<xsl:value-of select="@company" />
</name>
<symbol>
<xsl:value-of select="@symbol" />
</symbol>
<price>
<xsl:value-of select="@price" />
</price>
</stock>
<hi>
</hi>
</xsl:for-each>
</xmi:XMI>
</xsl:template>
</xsl:stylesheet>
&#13;
这就是我得到的结果:
<?xml version="1.0" encoding="UTF-8"?><XMI xmlns:UML="org.omg.xmi.namespace.UML"/>
&#13;
控制台上没有错误:
10:10:19,639 INFO [main] Main - javax.xml.transform.TransformerFactory=org.apache.xalan.processor.TransformerFactoryImpl
10:10:19,639 INFO [main] Main - java.endorsed.dirs = D:\ PFE.metadata.plugins \ org.eclipse.wst.xsl.jaxp.launching \ endorsed 10:10:19,639 INFO [main] Main - launchFile:D:\ PFE.metadata.plugins \ org.eclipse.wst.xsl.jaxp.launching \ launch \ launch.xml 10:10:19,873 INFO [main] JAXPSAXProcessorInvoker - 转换...... 10:10:19,889 INFO [main] JAXPSAXProcessorInvoker - 完成。
任何帮助?
答案 0 :(得分:0)
您报告的结果不我使用您的代码获得的结果。样式表有两个主要问题:
您正在使用前缀xmi:
而不将其绑定到命名空间;这会生成解析错误,不会产生任何结果。
从模板的上下文 - 即/
根节点 - 指令:
<xsl:for-each select="UML:Package">
什么都不选。它必须是:
<xsl:for-each select="XMI/UML:Package">