我从EA Sparx生成xml。它是我的转换的输入,所以这是 XML输入:
<?xml version="1.0" encoding="windows-1252"?>
<xmi:XMI xmi:version="2.1" xmlns:uml="http://schema.omg.org/spec/UML/2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1">
<xmi:Documentation exporter="Enterprise Architect" exporterVersion="6.5"/>
<uml:Model xmi:type="uml:Model" name="EA_Model" visibility="public">
...
</uml:Model>
<xmi:Extension extender="Enterprise Architect" extenderID="6.5">
...
</xmi:Extension>
</xmi:XMI>
我创建了用于转换的简单Java程序,其中还导入了外部库saxon9he.jar。我认为这是XSLT 2.0的库。我创建了这个 XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:uml="http://schema.omg.org/spec/UML/2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1">
<xsl:output method="xml" encoding="windows-1252" indent="yes"/>
<xsl:template name="Base" match="/">
<xmi:XMI xmi:version="2.1" xmlns:uml="http://schema.omg.org/spec/UML/2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1">
<xmi:Documentation exporter="Enterprise Architect" exporterVersion="6.5"/>
<xsl:call-template name="model" />
<xsl:call-template name="extension"/>
</xmi:XMI>
</xsl:template>
<xsl:template name="model" match="uml:Model">
<uml:Model>
xmi:type= <xsl:value-of select="@xmi:type"/>
name= <xsl:value-of select="@name"/>
visibility=<xsl:value-of select="@visibility"/>
</uml:Model>
</xsl:template>
<xsl:template name="extension" match="xmi:Extension">
extension
</xsl:template>
</xsl:stylesheet>
并创建此 XML输出:
<?xml version="1.0" encoding="windows-1252"?>
<xmi:XMI xmlns:uml="http://schema.omg.org/spec/UML/2.1"
xmlns:xmi="http://schema.omg.org/spec/XMI/2.1"
xmi:version="2.1">
<xmi:Documentation exporter="Enterprise Architect" exporterVersion="6.5"/>
<uml:Model>
xmi:type=
name=
visibility=
</uml:Model>
extension
</xmi:XMI>
为什么输出xml没有选择属性?为什么它们是空的?我找不到xsl:value-of select的问题在哪里?请帮我。
答案 0 :(得分:0)
调用命名模板不会更改当前上下文。代替:
<tr style={{backgroundColor: this.props.color}}> ...some text here...</tr>
尝试:
<xsl:call-template name="model" />
否则,您将保留在<xsl:apply-templates select="xmi:XMI/uml:Model"/>
根节点的上下文中,该根节点没有您要检索的任何属性。
然后当然匹配/
的模板不需要名称。