这种方式我们可以在xslt中编码

时间:2012-03-23 07:03:13

标签: xslt xslt-1.0

这是我的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条件的正确方法吗?

是否可以像这样编码:

是否可以使用element循环读取所有代码(例如optionalemptyfor each)?

如果它是可选的,那么我希望它在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 &gt; (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 &gt; (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 &gt; (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>

1 个答案:

答案 0 :(得分:2)

了解“我们可以在XSLT中编写代码”的一个好方法是阅读一本关于XSLT的好书,阅读这个标签中的任何好答案,练习一点 ......

如果你想要对可能的写作风格有一个印象,那么也要看一下FXSL库的代码 - 你会感觉到一种特殊的编码风格,我相信这也不错。 / p>

例如, this code 在纯XSLT 2.0中实现了一个通用的,表驱动的LR(1)解析器。

并且 this code 计算最大素数因子600851475143(一个很好的项目Euler问题的纯XSLT解决方案)。

您可能也有兴趣熟悉XPath,它是XSLT最重要的组成部分。

Here 二进制搜索树数据类型的纯XPath实现。

here set 类型的纯XPath实现。

最后, here 是解决流行的FizzBu​​zz问题的XPath解决方案。