Я пытаюсь проверить атрибут, который определен в схеме как тип данных Boolean. XML динамически создается, и если значение в XML равно 1, я просто хочу что-то напечатать. Но ничего не печатает.XSL Как проверить тип данных типа boolean?
Вот схема
<xs:element name="Data">
<xs:complexType>
<xs:all minOccurs="1" maxOccurs="1">
<xs:element id="variable" name="variable" type="xs:boolean" />
</xs:all>
</xs:complexType>
</xs:element>
Вот XML-
<Data>
<variable>1</variable>
<variable2>0</variable2>
<variable3>1</variable3>
</Data>
Я пробовал различные способы. Вот то, что я попытался (я пробовал, когда и если)
<xsl:choose>
<xsl:when test="variable = '1'">Print something</xsl:when>
<xsl:when test="variable = 1">Print something</xsl:when>
<xsl:when test="variable = 'true'">Print something</xsl:when>
<xsl:when test="@variable = 1">Print something</xsl:when>
<xsl:when test="@variable = '1'">Print something</xsl:when>
<xsl:when test="@variable = true">Print something</xsl:when>
<xsl:otherwise>
<!--nothing-->
</xsl:otherwise>
</xsl:choose>
<xsl:if test="variable = '1'">Print something</xsl:if>
<xsl:if test="variable = 'true'">Print something</xsl:if>
Мой XSL начинается с этой
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
Пожалуйста, обеспечивают минимальные, но полные образцы из XML, XSLT и вывода, которые вы получаете, и того, который вы хотите разрешить для воспроизведения проблемы. http://xsltransform.net/bFDb2Cj работает как ожидалось для меня. –
Контекст - это все в XSLT. Тесты 'variable = 1' и' variable = '1'' должны работать как _provided_, текущий узел контекста - это элемент 'Data', _ и _ нет пространств имен. Является ли это полным XML или это всего лишь фрагмент целого, и если это фрагмент, имеет ли элемент предка декларация пространства имен по умолчанию ('xmlns =" ... "')? –
To @IanRoberts. Я не уверен, что вы имеете в виду, но нет пространства имен. Он начинается только с –