В поиске нашел схожие вопросы, но как заимплементить мой — так и не понял).
Если не трудно расскажите или ткните носом.
Есть xml
<resultSearch>
<searchString>
some text
</searchSring>
......
<results>
<result1>
<tag1>text</tag1>
.............
</result1>
.............
</results>
</resultSearch>
Некий класс в результате своей работы формирует xsl, которая потом будет работать с этим xml.
Формируется xsl такого вида
<xsl:template match='/'>
some text : <xsl:value-of select='//searchString'/> -- что то выводится.
?????????????
</xsl:template>
Вместо знаков ???? мне нужно подставить выражение которое бы копировало ноду results со всеми поднодами за исключением некоторой скажем resultX/excludedNode.
Что я думал — это применить копирование при помощи xsl:copy а потом заэксклюдить некоторую ноду.
НО. У меня в шаблоне уже есть template match — поэтому не нашел как заэксклюдить еще.
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, akotlyarov, Вы писали:
A>>НО. У меня в шаблоне уже есть template match — поэтому не нашел как заэксклюдить еще.
L>Покажите, как вы делаете у себя в шаблоне. А то с нуля как-то влом писать.
Здравствуйте, akotlyarov, Вы писали:
L>>Покажите, как вы делаете у себя в шаблоне. А то с нуля как-то влом писать.
A>Вот варианты которые можно заюзать. A>Копирует ноды
A>
A><xsl:template match="@*|node()">
A> <xsl:copy>
A> <xsl:apply-templates select="@*|node()"/>
A> </xsl:copy>
A></xsl:template>
A><xsl:template match="tag"/> (*)
A>
Он не работает?
A>Но я ведь не могу вставить (*) внутрь уже существующего в моем шаблоне template match.
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, akotlyarov, Вы писали:
L>>>Покажите, как вы делаете у себя в шаблоне. А то с нуля как-то влом писать.
A>>Вот варианты которые можно заюзать. A>>Копирует ноды
Здравствуйте, akotlyarov, Вы писали:
A>>>Но я ведь не могу вставить (*) внутрь уже существующего в моем шаблоне template match.
L>>Не совсем понял предложение.
A>Ну насколько я понял xsl:template не может содержать вложенного xsl:template
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, akotlyarov, Вы писали:
A>>Упс. Вдь можно использовать alias .. Я думаю тогда не будет конфликтов ?
L>Alias? А что это такое? Ты сейчас про xslt говоришь или про что-то другое?
Я про то что если в существующий шаблон
<xsl:template match='/'>
some text : <xsl:value-of select='//searchString'/> -- что то выводится.
?????????????
</xsl:template>
вставить код "вырезки" xml то получится такой вот шаблон
<xsl:template match='/'>
some text : <xsl:value-of select='//searchString'/> -- что то выводится.
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="tag"/>
</xsl:template>
Это ведь не валидно.
P.S. то что выделено курсивом — уже сформировано перед вставкой блока который выводит чать xml.
Но в w3c recommendation я прочитал что можно сделать так
Здравствуйте, akotlyarov, Вы писали:
A>Но в w3c recommendation я прочитал что можно сделать так
A><xsl:stylesheet A> version="1.0" A> xmlns:xsl="http://www.w3.org/1999/XSL/Transform" A> xmlns:fo="http://www.w3.org/1999/XSL/Format" A> xmlns:axsl="http://www.w3.org/1999/XSL/TransformAlias">
A><xsl:namespace-alias stylesheet-prefix="axsl" result-prefix="xsl"/>
A><xsl:template match="/"> A> <axsl:stylesheet> A> <xsl:apply-templates/> A> </axsl:stylesheet> A></xsl:template>
A><xsl:template match="block"> A> <axsl:template match="{.}"> A> <fo:block><axsl:apply-templates/></fo:block> A> </axsl:template> A></xsl:template>
A></xsl:stylesheet>
это вообще о другом. эти алиасы нужны для того, чтобы с помощью xslt можно было генерить другие xslt. Но это не твой случай.
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, akotlyarov, Вы писали:
A>>Но в w3c recommendation я прочитал что можно сделать так
A>><xsl:stylesheet A>> version="1.0" A>> xmlns:xsl="http://www.w3.org/1999/XSL/Transform" A>> xmlns:fo="http://www.w3.org/1999/XSL/Format" A>> xmlns:axsl="http://www.w3.org/1999/XSL/TransformAlias">
A>><xsl:namespace-alias stylesheet-prefix="axsl" result-prefix="xsl"/>
A>><xsl:template match="/"> A>> <axsl:stylesheet> A>> <xsl:apply-templates/> A>> </axsl:stylesheet> A>></xsl:template>
A>><xsl:template match="block"> A>> <axsl:template match="{.}"> A>> <fo:block><axsl:apply-templates/></fo:block> A>> </axsl:template> A>></xsl:template>
A>></xsl:stylesheet>
L>это вообще о другом. эти алиасы нужны для того, чтобы с помощью xslt можно было генерить другие xslt. Но это не твой случай.
Здравствуйте, akotlyarov, Вы писали:
L>>это вообще о другом. эти алиасы нужны для того, чтобы с помощью xslt можно было генерить другие xslt. Но это не твой случай.
A>Сейчас мой вопрос понятен?
Более понятен, чем раньше.
A>Решений больше нет никаких ?