Показать полную графическую версию : Что еще можно сделать с XML + XSLT + XSL
Страниц :
1
2
3
4
5
6
7
8
9
10
11
[
12]
13
Vlad Drakula
25-04-2007, 01:52
FADE
примерно так
а как вывести количество символов? strlength() - пишет что такой функции не существует..
и как вывести элемент <input type="checkbox"> с атрибутом checked если элемент <item>1</item> и если <item>0</item>, вывести без атрибута checkbox??
внутри контейнера <xsl:attribute-set> аказыца запрещены конструкции if, но тогда как???...:(
Vlad Drakula
02-05-2007, 11:36
FADE
а как вывести количество символов? strlength() - пишет что такой функции не существует..
вы мануал хоть читали? я же специально приводил ссылку на http://zvon.org/xxl/XSLTreference/Output/index.html
там как раз написано что есть функция string-length
FADE
и как вывести элемент <input type="checkbox"> с атрибутом checked если элемент <item>1</item> и если <item>0</item>, вывести без атрибута checkbox??
внутри контейнера <xsl:attribute-set> аказыца запрещены конструкции if, но тогда как???...
<xsl:if test="./item[text() = '1']">
<xsl:attribute name="checked">checked</xsl:attribute>
</xsl:if>
внутри контейнера <xsl:attribute-set> аказыца запрещены конструкции if
Vlad Drakula
03-05-2007, 17:52
FADE
я понимаю что это все очень модно, но может вы по простому будете делать?
xsl:attribute-set - не имеет привязки к конеретной ноде...
Vlad Drakula
вот мой код:
<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="page">
<form method="post">
<xsl:element name="input" use-attribute-sets="input_update"/>
</form>
</xsl:template>
<xsl:attribute-set name="input_update">
<xsl:attribute name="checked"/>
<xsl:attribute name="name">update</xsl:attribute>
<xsl:attribute name="value">1</xsl:attribute>
<xsl:attribute name="type">checkbox</xsl:attribute>
</xsl:attribute-set>
</xsl:stylesheet>
вы предлагаете:
<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="page">
<form method="post">
<xsl:element name="input" use-attribute-sets="input_update"/>
</form>
</xsl:template>
<xsl:attribute-set name="input_update">
<xsl:if test="./item[text() = '1']">
<xsl:attribute name="checked"/>
</xsl:if>
<xsl:attribute name="name">update</xsl:attribute>
<xsl:attribute name="value">1</xsl:attribute>
<xsl:attribute name="type">checkbox</xsl:attribute>
</xsl:attribute-set>
</xsl:stylesheet>
ваш вариант - не работает :)
Vlad Drakula
04-05-2007, 14:43
FADE
я предлагаю:
<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="page">
<form method="post">
<xsl:element name="input" use-attribute-sets="input_update">
<xsl:if test="./item[text() = '1']">
<xsl:attribute name="checked"/>
</xsl:if>
<xsl:attribute name="name">update</xsl:attribute>
<xsl:attribute name="value">1</xsl:attribute>
<xsl:attribute name="type">checkbox</xsl:attribute>
</xsl:element>
</form>
</xsl:template>
</xsl:stylesheet>
Vlad Drakula
а тогда зачем в твоем варианте:
use-attribute-sets="input_update">
?..:)
Vlad Drakula
04-05-2007, 17:35
FADE
забыл удалить
а если допустим надо сравнить два значения тега:
так не проходит валидацию:(:
<xsl:if test="item[text() = 'mypear[text()]']">
а так по-моему слишком длинно?
<xsl:variable name="b"><xsl:value-of select="//mypear"/></xsl:variable>
<xsl:if test="item[text() = $b]">
но работает :)....
что думаете, можно укоротить?:)
все даже еще намного серьездне!
есть куча элементов:
<mypear>
<b>1</b>
<b>2</b>
<b>3</b>
</mypear>
их нужно сранить с <item>2</item> и вслучае если хоть один ему равен ставим атрибут checked ... как??
пока реализовал спомощью форича, внутри которого создается переменная в которую записыввается значение, далее идет проверка, а можно ли обойтись без форича, и реализовать это с помощью xpath , а то слишком много будет элементов?:)
Vlad Drakula
06-05-2007, 16:05
FADE
приведите нормальные входные данные:
1) то что есть на входе
2) то что должно быть на выходе
Vlad Drakula
на входе (xml):
<mypear>
<id>1</id>
<id>2</id>
<id>3</id>
<id>4</id>
<id>5</id>
</mypear>
<check>
<id>2</id>
<id>4</id>
<id>5</id>
</check>
из mypear элементов строится список чекбоксов с соответствующими id, те элементы что в check в случае совпадения id, должны быть отмеченны по умолчанию:)
пока реализовал спомощью форича
по check
, внутри которого создается переменная в которую записыввается значение
check/id
, далее идет проверка
сам форич находится в темплейте для отображения каждого чекбокса mypear/id
, а можно ли обойтись без форича, и реализовать это с помощью xpath , а то слишком много будет элементов?
может быть вот так:
<mypear>
<id>1</id>
<id>2</id>
<id>3</id>
<id>4</id>
<id>5</id>
</mypear>
<admin>
<check>
<id>2</id>
<id>4</id>
<id>5</id>
</check>
</admin>
<user>
<check>
<id>1</id>
</check>
</user>
...
<guest>
<check>
<id>3</id>
<id>1</id>
<id>5</id>
</check>
</guest>
Vlad Drakula
07-05-2007, 17:08
FADE
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:param name="tyle"/>
<xsl:template match="/">
<div>
<xsl:apply-templates select="//mypear/id"/>
</div>
</xsl:template>
<xsl:template match="mypear/id">
<xsl:variable name="id" select="text()"/>
<input type="checkbox" id="{text()}" value="{text()}">
<xsl:if test="//node()[name() = $type]/check/id[text() = $id]">
<xsl:attribute name="checked">checked</xsl:attribute>
</xsl:if>
</input>
</xsl:template>
</xsl:stylesheet>
если я правильно понял то вот этот шаблон сделает примерно то что вам нужно...
Sander83
13-06-2007, 15:40
Делаю фалик с шаблоном xsl и к нему xml файл. Открываю xml в брузере. Нормально форматируеться по шаблону.
Беру делаю html или xhtml файл и xsl шаблон к нему. Открываю html в браузере. Преобразование не применяеться.
Можно ли выполнить преобразование над html не на сервере, и не используя JavaScript, аналогичным образом, как в первом случае, с xml?
Vlad Drakula
13-06-2007, 15:49
Sander83
1) html не есть валидный XML
2) так сделать можно, но я не вижу в этом смысла, зачем???
Sander83
13-06-2007, 16:48
1)я пробывал сделать это на xhtml, а это валидный xml.
2)хочу что бы на сайте лежал xml и файл трансформации, xml легко модифицировать. Не хочеться использовать серверную обработку.
И не хочеться на клиенте пользоваться mshtml или XSLTrasnform библиотеками, так как их загрузка может быть запрещена на клиенте.
Как всеьтаки это можно сделать?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.