Оператор if-else в XML - PullRequest
       2

Оператор if-else в XML

0 голосов
/ 02 мая 2018

У меня есть такой личный идентификационный номер: 53012393715. Десятый номер означает пол. Я хочу использовать оператор if-else для выполнения такой операции. Сначала я должен получить 10-е число из id, в моем случае это 1 (один). Если число четное (0,2,4,6,8), это означает женщину, в противном случае (1,3,5,7,9) это означает мужчина. Мне нужно получить пол в моем выходном XML-файле.

Я пытался получить 10-е число с помощью функции concat, но это не работает, также я не знаю, как правильно использовать оператор if-else.

Мой входной XML-файл:

<ClientList>
  <Client>
    <IdNumber>53012393715</IdNumber>
  </Client>
</ClientList>

Этот один выходной XML-файл, который я хочу получить:

<ClientList>
  <Client>
    <Gender>man</Gender>
  </Client>
</ClientList>

1 Ответ

0 голосов
/ 02 мая 2018

Используйте substring, чтобы получить 10-й предмет

 <xsl:variable name="gender" select="substring(IdNumber, 10, 1)" />

В XSLT xsl:if - это просто одно утверждение, больше ничего. Если вы хотите сделать «если / еще», вы используете xsl:choose

<xsl:choose>
   <xsl:when test="number($gender) mod 2 = 0">Male<xsl:when>
   <xsl:otherwise>Female<xsl:otherwise>
<xsl:choose>

Соединение этого дает это ...

<xsl:template match="Client">
  <Client>
    <xsl:variable name="gender" select="substring(IdNumber, 10, 1)" />
    <xsl:choose>
       <xsl:when test="number($gender) mod 2 = 1">Male</xsl:when>
       <xsl:otherwise>Female</xsl:otherwise>
    </xsl:choose>
  </Client>
</xsl:template>

Однако, если бы вы могли использовать XSLT 2.0, вы могли бы сделать это ...

<xsl:value-of select="if (number($gender) mod 2 = 1) then 'male' else 'female'" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...