这是我的xml代码:
<define name="Procedure">
<element name="Procedure" radlex:id="RID1559" radlex:match="Exact">
<element name="View" radlex:id="RID10420" radlex:match="Exact">
<optional>
<element name="Supine" radlex:id="RID10421" radlex:match="Exact" snomed:id="416733000">
<empty/>
</element>
</optional>
<optional>
<element name="Upright" radlex:id="RID10455" radlex:match="Exact">
<empty/>
</element>
</optional>
<text/>
</element>
<text/>
</element>
</define>
我的XSLT代码是这样写的。这是编写代码的正确方式吗?这是在XSLT中使用if条件的正确方法吗?
有可能这样编码吗:
是否可以使用for each
循环读取所有标签(如element
、optional
、empty
)?
如果它是可选的,那么我希望它在HTML中创建一个复选框;我希望它能为他们所有人做这件事。
<xsl:template match="rng:define">
<table>
<xsl:for-each select="rng:element[@name='Procedure']">
<span style="color:blue;">
<tr>
<td>
<xsl:text> Procedure </xsl:text>
</td>
</tr>
<xsl:if test="rng:element > (rad:id='RID10420')">
<tr>
<td>
<xsl:text> View </xsl:text>
</td>
</tr>
<tr>
<td>
<input type="text" name="View"></input>
</td>
</tr>
</xsl:if>
<xsl:if test="rng:element/rng:optional > (rad:id='RID10421')">
<tr>
<td>
<input text="Supine" name="cSupine" type="checkbox" class="checkbox" id="cSupine" value="checkbox"/>
<xsl:text> Supine </xsl:text>
</td>
</tr>
</xsl:if>
<xsl:if test="rng:element/rng:optional > (rad:id='RID10455')">
<tr>
<td>
<input text="Upright" name="cUpright" type="checkbox" class="checkbox" id="cUpright" value="checkbox"/>
<xsl:text> Upright </xsl:text>
</td>
</tr>
</xsl:if>
</span>
</xsl:for-each>
</table>
</xsl:template>
了解"我们可以用XSLT编码"的一个好方法是阅读一本关于XSLT的好书,阅读这个标签中的任何好答案,练习一点。。。
如果你只想对可能的写作风格有一个印象,也可以看看FXSL库的代码——你会对一种特定的编码风格有一种感觉,我相信这还不错。
例如,这段代码在纯XSLT2.0中实现了一个通用的、表驱动的LR(1)解析器。
此代码计算最大素数600851475143(一个漂亮的项目Euler问题的纯XSLT解决方案)。
您可能也有兴趣了解XPath,它是XSLT最重要的组成部分。
这里是二进制搜索树数据类型的纯XPath实现。
这里的是集合类型的纯XPath实现。
最后,这里是流行的FizzBuzz问题的XPath解决方案。