Проверка значений в XSLT и состоянии - PullRequest
0 голосов
/ 14 декабря 2011

Правильно перефразируя мой вопрос:

У меня есть XSLT, где мне нужно проверить значения узлов для конкретных данных.Например (псевдокод):

If only H occurs then set target element value as 'H'
Else if
    Only B or N then set target element value as 'BN'

Если исходный XML:

<n1>N</n1>
<n1>B</n1>
<n1>N</n1>

Целевой узел: BN

Если исходный XML:

<n1>H</n1>
<n1>H</n1>
<n1>H</n1>

Целевой узел: H

Атрибут отсутствует.Я должен задавать текст только при выполнении условия в целевом узле.

Могу ли я использовать что-то вроде:

<xsl:variable name="elements">
<xsl:for-each select="/test/elem">
<xsl:value-of select="."/>
<xsl:if test="position() < last()">
</xsl:if>
</xsl:for-each>
</xsl:variable>

Может ли приведенное выше дать мне конкатат всех значений элементов, и тогда я смогусделать проверку, чтобы увидеть, если он содержит х, то я могу сделать набор текста?

1 Ответ

1 голос
/ 16 декабря 2011

Когда этой таблице стилей

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/">
    <xsl:variable name="value">
        <xsl:choose>
            <xsl:when test="/root[not(n1 != 'H')]">
                <xsl:value-of select="'H'"/>
            </xsl:when>
            <xsl:when test="/root[not(n1[. != 'B' and . != 'N'])]">
                <xsl:value-of select="'BN'"/>
            </xsl:when>
            <xsl:otherwise>
                <xsl:value-of select="'Something else'"/>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:variable>
    <xsl:text>$value = </xsl:text>
    <xsl:value-of select="$value"/>
</xsl:template>
</xsl:stylesheet>

дается этот ввод

<root>
    <n1>H</n1>
    <n1>H</n1>
    <n1>H</n1>
</root>

, он производит желаемый вывод

$value = H

Аналогично

<root>
    <n1>N</n1>
    <n1>B</n1>
    <n1>N</n1>
</root>

или с

<root>
    <n1>N</n1>
    <n1>N</n1>
    <n1>N</n1>
</root>

получаем

$value = BN

А с

<root>
    <n1>N</n1>
    <n1>B</n1>
    <n1>x</n1>
</root>

или с

<root>
    <n1>N</n1>
    <n1>B</n1>
    <n1>H</n1>
</root>

получаем

$value = Something else

Строка H, BN или Something else является значением переменной.Вместо того, чтобы просто выводить значение этой переменной, вы, конечно, можете установить его как содержимое нового элемента, который вы создаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...