XSLT: [торможу] как получить значения атрибутов?
<xsl:template match="div">
<xsl:value-of select="@id"/>
</xsl:template>
оно мне выдаёт текствое содержимое дивов?
Буквально позавчера разбирался с такой проблемой, оказалось, что дело в namespace'ах.
а что, никак нельзя указать процессору их не использовать?
можно sed-ом пройтись, но может штатные средства есть?
исходник (in.xml):
<?xml version="1.0"?>
<html>
<title> preved</title>
<div class="list">
<div class="article" id="post344633"/>
<div class="advert" id="XXX"/>
<div class="article" id="post344633"/>
<div class="advert" id="XXX"/>
<div class="article" id="post331233"/>
<div class="article" id="post344322"/>
<div class="advert" id="XXX"/>
<div class="advert" id="XXX"/>
<div class="article" id="post343233"/>
</div>
</html>
XSL (idlist.xsl):
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="utf-8"/>
<xsl:template match="div[@class='article']">
<xsl:value-of select="@id"/>
</xsl:template>
</xsl:stylesheet>
Результат (Saxon и MSXSL выдают одно и то же):
preved
post344633
post344633
post331233
post344322
post343233
при чём здесь <title> ?
Ps
надо помнить что у xsl есть правило по умолчанию: для элемента выводится значение самого элемента
соответственно если такое поведение не нужно, то это правило надо блокировать добавление правила в конец вида:
<xsl:template match="/ | @* | node"/>
в первый раз требовалась обработка всех элементов
во второй текстов не было, вся информация была в атрибутах
Спасибо!
эээ.. если такую вещь добавить - вообще ничего не выводит
только будь внимателен, то правило которое я привел - оно вообще все запрещает, даже обработку корневого элемента
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="utf-8"/>
<xsl:template match="/">
<xsl:value-of select="//div[@class='article']/@id"/>
</xsl:template>
</xsl:stylesheet>
т.е. явно бы описывал, что во всем документе ищем div-ы с article и у них выводим id
ps
код не проверял, может чуть-чуть надо допилить
<xsl:template match="text"/>
твоё ща посмотрю
Оставить комментарий
yolki
есть XHTML документ с примерно такой структурой:(+) - означает что там что-то в нутрях есть, это пока не интересно..
как получить список всех id?