Как я могу использовать xsl: if для этого результата? - PullRequest
1 голос
/ 04 июля 2019

Как я могу использовать xsl: if для вывода type = label. Я не знаю, как сделать, если синтаксис оператора.

Я использую xslt 1.0.

<xsl:if test="">                                 
 <xsl:attribute name="type">                                     
   <xsl:value-of select=""/>                                     
 </xsl:attribute>
</xsl:if>

это ресурс:

<xxxxx type="str">label</xxxxx>

Мне нравится выводить

<key name="xxxxx" type="label"/>

Ответы [ 2 ]

0 голосов
/ 04 июля 2019

Как я могу использовать xsl: if для выходного типа = метка.Я не знаю, как мне сделать, если синтаксис оператора.

Я использую xslt 1.0.

При использовании XSLT редко необходимо использовать какие-либо условные инструкции XSLT.вообще - при использовании всех возможностей языка этого можно (и нужно) избегать.

Вот одно из таких решений проблемы:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

  <xsl:template match="xxxxx[@type='str']">
    <key name="xxxxx" type="{.}"/>
  </xsl:template>
</xsl:stylesheet>

Когда этопреобразование применяется к следующему XML-документу (не предоставлено!):

<t>
    <a/>
    <xxxxx type="str">label</xxxxx>
    <b/>
    <c/>
</t>

желаемый, правильный результат:

<key name="xxxxx" type="label"/>
0 голосов
/ 04 июля 2019

Вы хотите получить следующее выражение, если вы соответствуете элементу xxxxx

<xsl:if test="@type='str'">         

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

<xsl:template match="*">
  <key name="{local-name()}">
    <xsl:if test="@type='str'">                                 
      <xsl:attribute name="type">                                     
        <xsl:value-of select="."/>                                     
      </xsl:attribute>
    </xsl:if>
  </key>
</xsl:template>

Применительно к этому XSLT

<xxxxx type="str">label</xxxxx>

Выводится следующее

<key name="xxxxx" type="label"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...