Таким образом, мы можем кодировать в xslt - PullRequest
0 голосов
/ 23 марта 2012

Это мой код 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-код следующим образом. Это правильный способ написания моего кода? Это правильный способ использования условия if в XSLT?

Можно ли кодировать это так:

Можно ли прочитать все теги (например, element, optional, empty), используя цикл for 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 Ответ

2 голосов
/ 23 марта 2012

Хороший способ понять, как "мы можем кодировать в XSLT" - это прочитать хорошую книгу по XSLT, прочитать любой хороший ответ в этом теге, попрактиковаться немного ...

Если вы хотите просто получить представление о возможных стилях написания, взгляните также на код библиотеки FXSL - вы почувствуете один конкретный стиль кодирования, который, я считаю, неплохой.

Например, этот код реализует общий анализатор LR (1) на основе таблиц в чистом XSLT 2.0.

И этот код вычисляет максимальный простой множитель 600851475143 (чистое решение XSLT для хорошей задачи Эйлера проекта).

Вам также может быть интересно ознакомиться с XPath, который является наиболее значимым компонентом XSLT.

Здесь - это чисто XPath-реализация типа данных Двоичного дерева поиска .

И здесь - это чистая реализация XPath типа set .

Наконец, здесь - решение XPath для популярной проблемы FizzBuzz.

...