2009-07-14 2 views
0

Хорошо, я в тупике. Я хотел бы проверить, если параметр, отправленный в шаблон XSLT, содержит период и распечатывает кавычки, если это не так. Параметр, который я хотел бы проверить, - это значение в шаблоне ниже. Кажется, что функция contains должна работать, но по какой-то причине кавычки всегда выводятся независимо от содержимого «value». Что я делаю не так? СпасибоXSLT «содержит» функцию для проверки на период

<!-- Add a JSON property --> 
<xsl:template name="addProperty"> 
    <xsl:param name="name" /> 
    <xsl:param name="value" /> 

    <xsl:value-of select="$name" /> 
    <xsl:text>:</xsl:text> 
    <xsl:if test="not(contains($value,'.'))">'</xsl:if> 
    <xsl:value-of select="$value" /> 
    <xsl:if test="not(contains($value,'.'))">'</xsl:if> 
    <xsl:text>,</xsl:text>  
</xsl:template> 
+0

Вы можете вставить некоторые материалы, некоторые ожидаемый результат и некоторый фактический результат? – Welbog

ответ

1

Когда я вызываю ваш шаблон, он отлично работает. Как вы это называете? Это то, что я использовал:

<xsl:call-template name="addProperty"> 
    <xsl:with-param name="name" select="'abc'"/> 
    <xsl:with-param name="value" select="'123'"/><!-- quoted number --> 
</xsl:call-template> 
<xsl:call-template name="addProperty"> 
    <xsl:with-param name="name" select="'abc'"/> 
    <xsl:with-param name="value" select="123"/><!-- NOT quoted number --> 
</xsl:call-template> 
<xsl:call-template name="addProperty"> 
    <xsl:with-param name="name" select="'xyz'"/> 
    <xsl:with-param name="value" select="'456.789'"/><!-- quoted number --> 
</xsl:call-template> 
<xsl:call-template name="addProperty"> 
    <xsl:with-param name="name" select="'xyz'"/> 
    <xsl:with-param name="value" select="456.789"/><!-- NOT quoted number --> 
</xsl:call-template> 

И это то, что я получил в качестве вывода:

abc:'123',abc:'123',xyz:456.789,xyz:456.789, 

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

Хороший способ проверить это, чтобы добавить что-то вроде этого, чтобы ваш именованный шаблон и посмотреть, что он производит, если вы не имеете хороший отладчик под рукой:

XXX<xsl:value-of select="$value"/>XXX 
YYY<xsl:value-of select="contains($value, '.')"/>YYY 
ZZZ<xsl:value-of select="not(contains($value, '.'))"/>ZZZ 
+0

Вы правы. Я просто понял, что я идиот. С помощью ввода, который я хотел проверить, вызывается другой шаблон. Извините за беспокойство. – Steve

Смежные вопросы