2015-02-09 6 views
1

Я ищу более простой способ конкатенации переменной и строкового значения. В настоящее время у меня есть следующее:Переменная xslt concat и строка

<xsl:for-each select="$var_asset_name"> 
    <xsl:attribute name="Asset_Name" select="fn:concat(fn:string(.), '_title')"/> 
</xsl:for-each> 

с $ var_asset_name, определенным далее. Это работает, но мне интересно, есть ли более простой способ добиться того же результата. Я попытался

<xsl:attribute name="Asset_Name" select="fn:concat($var_asset_name, '_title')"/> 

, но он не работает (ошибка: Прилагаемый последовательность («2» товар (ов)) имеет неправильное вхождение в соответствии с хз типа последовательности: anyAtomicType («ноль или один»))

Заранее спасибо.

+2

Ваш код является неправильным по другим причинам, не связанным непосредственно с вопросом - вы выполняете итерацию с использованием for-each и пытаетесь создать более одного атрибута с тем же именем. это просто неправильно. –

+2

Если '$ var_asset_name' является строкой,' concat ($ var_asset_name, '_title') 'отлично. Сообщение об ошибке и использование '$ var_asset_name' с' xsl: for-each' указывает, что '$ var_asset_name' не является строкой. Предоставьте [** Минимальный, * Полный * и Подтверждаемый пример (MCVE) **] (http://stackoverflow.com/help/mcve), который обнаруживает проблему, особенно включая определение '$ var_asset_name'. Благодарю. – kjhughes

ответ

0

С этим входом:

<root/> 

Следующая XSLT (который использует шаблон значения атрибута):

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="xml" indent="yes"/> 
<xsl:strip-space elements="*"/> 
<xsl:variable name="var_asset_name">stack</xsl:variable> 
<xsl:template match="root"> 
    <root Asset_Name="{$var_asset_name}_overflow"/> 
</xsl:template> 
</xsl:stylesheet> 

бы произвести:

<?xml version="1.0" encoding="utf-8"?> 
<root Asset_Name="stack_overflow"/> 

Я надеюсь, что вы хотели простой способ для создания атрибутов.

+0

Спасибо за ваш ответ .. Я действительно искал более простой способ конкатенации переменной и строки, без необходимости использовать для каждого, поэтому это действительно не решает эту проблему, к сожалению – katharey

+0

@ Lech Rzedzicki Почему мой код " просто неправильно "? На самом деле он производит нужный мне результат. Я просто искал способ упростить его. – katharey