Любой способ отфильтровать нулевые результаты в XSLT? - PullRequest
0 голосов
/ 25 мая 2018

Я работаю над переводом XSLT, который обрабатывает несколько файлов, и у некоторых файлов не будет поля.У меня есть обходной путь (как показано ниже), но я бы предпочел не делать это для всех полей.

Примечание. Я использовал XSLT 1.0, но теперь могу использовать 2.0

<xsl:variable name="TestVar" select="ns2:value"/>
        <xsl:if test="$TestVar != null">
                <Namespace:hasThisValue>
                    <xsl:value-of select="ns2:value"/>
                </Namespace:hasThisValue>
                </xsl:if>

1 Ответ

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

Вам нужно будет показать точные детали входных образцов, в вашем тексте вы говорите «некоторые файлы не будут иметь поля», в вашем коде у вас есть проверка «ns2: value! = Null»что, на мой взгляд, не имеет особого смысла, поскольку правая часть «null» будет пытаться выбрать элемент с таким именем null.Поэтому, поскольку большинство людей задают аналогичные вопросы, вы недостаточно хорошо объяснили, какие данные вы ожидаете и в какой результат вы хотите преобразовать их, в частности то, что вы считаете «нулевым» значением в контексте XML (например, схема XSD имеетxsi:nil атрибут для этого).

В общем, если вы хотите преобразовать ns2:value элементы в Namespace:hasThisValue элементы, вы бы написали шаблон

<xsl:template match="ns2:value">
  <Namespace:hasThisValue>
    <xsl:value-of select="."/>
  </Namespace:hasThisValue>
</xsl:template>

и просто гарантировали, что дальнейшиевверх по иерархии у вас есть <xsl:apply-templates/>.

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