Войти

Показать полную графическую версию : Что еще можно сделать с XML + XSLT + XSL


Страниц : 1 2 3 4 5 6 7 8 9 10 11 [12] 13

Vlad Drakula
25-04-2007, 01:52
FADE
примерно так

FADE
01-05-2007, 19:15
ясно

FADE
02-05-2007, 01:50
а как вывести количество символов? strlength() - пишет что такой функции не существует..

FADE
02-05-2007, 04:37
и как вывести элемент <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>

FADE
03-05-2007, 17:12
внутри контейнера <xsl:attribute-set> аказыца запрещены конструкции if

Vlad Drakula
03-05-2007, 17:52
FADE
я понимаю что это все очень модно, но может вы по простому будете делать?
xsl:attribute-set - не имеет привязки к конеретной ноде...

FADE
03-05-2007, 21:21
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>

FADE
04-05-2007, 16:22
Vlad Drakula
а тогда зачем в твоем варианте:
use-attribute-sets="input_update">
?..:)

Vlad Drakula
04-05-2007, 17:35
FADE
забыл удалить

FADE
06-05-2007, 07:16
а если допустим надо сравнить два значения тега:

так не проходит валидацию:(:


<xsl:if test="item[text() = 'mypear[text()]']">


а так по-моему слишком длинно?


<xsl:variable name="b"><xsl:value-of select="//mypear"/></xsl:variable>
<xsl:if test="item[text() = $b]">


но работает :)....

что думаете, можно укоротить?:)

FADE
06-05-2007, 07:37
все даже еще намного серьездне!

есть куча элементов:
<mypear>
<b>1</b>
<b>2</b>
<b>3</b>
</mypear>

их нужно сранить с <item>2</item> и вслучае если хоть один ему равен ставим атрибут checked ... как??

FADE
06-05-2007, 08:18
пока реализовал спомощью форича, внутри которого создается переменная в которую записыввается значение, далее идет проверка, а можно ли обойтись без форича, и реализовать это с помощью xpath , а то слишком много будет элементов?:)

Vlad Drakula
06-05-2007, 16:05
FADE
приведите нормальные входные данные:
1) то что есть на входе
2) то что должно быть на выходе

FADE
07-05-2007, 04:53
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