powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / xalam \ xsl \ передача объектов
7 сообщений из 7, страница 1 из 1
xalam \ xsl \ передача объектов
    #38692437
alex021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер, форумчане.
есть 2 файла xsl
в первом объявляю переменные : строку и и экземпляр класса Entity.
второй файл second.xsl - вывод на консоль эти переменных.
и простые классы java. Один entity. Второй класс просто выводи на консоль посылаемые объекты.
Проблема в том , что если выводить на консоль переменную "someString" из первого файла first.xsl, то все ок.
с переменной myentity есть проблема ее имя выводит null'ом.
Должно быть:
Код: sql
1.
2.
lalalalalala
Entity{name= namenamename}


а получается:
Код: sql
1.
2.
lalalalalala
Entity{name= null}


эмм..надеюсь кто-нибдь поймет о чем я тут))
почему так происходит?
что я делаю не так?
объяните пожалуйста!
Заранее огромное спасибо за потраченное Вами время.
first.xsl
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml"
                xmlns:myentity="xalan://MyEntity">
   <xsl:variable  name="varEntity" select="entity:new()" />
   <xsl:param name="someString" select="'lalalalalala'" />
   <xsl:template match="/">
           <xsl:call-template name="entityForm" />
   </xsl:template>

   <xsl:template name="productForm">
               <xsl:value-of select="myentity:setName($varEntity, 'namenamename')" />
   </xsl:template>
</xsl:stylesheet>



second.xsl
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:java="http://xml.apache.org/xalan/java"
                xmlns:myentity="xalan://MyEntity"
                xmlns:printer="xalan://ConsolePrinter">
    <xsl:import href="first.xsl" />
 <xsl:template match="/">
<xsl:value-of select="printer:printToConsole($varEntity)" />              // Entity{name=null}
<xsl:value-of select="printer:printToConsole($someString)" />            // lalalalalala
</xsl:template>




Entity.java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
class Entity{
private String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String toString() {
         return "Entity{" + "name="+name+"}";
    }
}



ConsolePrinter.java
Код: java
1.
2.
3.
4.
5.
class ConsolePrinter{
   public static printToConsole(Object obj){
      System.out.println(obj);
   }
}


...
Рейтинг: 0 / 0
xalam \ xsl \ передача объектов
    #38692489
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джаву, практически не знаю, но вот вопросы по этому коду
alex021
Код: xml
1.
2.
 xmlns:myentity="xalan://MyEntity">
   <xsl:variable  name="varEntity" select="entity:new()" />


1) разные префиксы неймспейсов myentity и entity. Опечатка?
2) Это нормальный вызов конструктора?
3) String в джаве это объект. Где инициализируется поле name я не увидел
4) разные названия шаблонов entityForm и productForm опять опечатка?
5) Ну и самое главное - у вас два шаблона с match="/" XSL процессор вызывает только один. Первый, который найдет.
...
Рейтинг: 0 / 0
xalam \ xsl \ передача объектов
    #38692502
alex021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_,

Да с entity - myentity и entity , entityForm и productForm тут опечатка вышла, когда пример этот составлял. прошу прощения.
1)по поводу конструктора- таким вызовом конструктора создается объект (xalan) , на сколько я вычитал из доки
2) name вроде как и не нуждается в инициализации.
передаю в метод параметр. там и инициализируется в классе Entity.java. или в xsl надо тоже его инициализировать? тогда пропадает весь смысл работы с объектами через xalan, на мой вгляд
3)по поводу "5) Ну и самое главное - у вас два шаблона с match="/" XSL процессор вызывает только один. Первый, который найдет."
может подкинете идею как тут выкрутиться ? ибо что-то я не могу завернуть ход мыслей своих в нужную сторону.
...
Рейтинг: 0 / 0
xalam \ xsl \ передача объектов
    #38692518
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В first
Код: xml
1.
2.
3.
<xsl:template match="*" mode="root">
    <xsl:call-template name="entityForm" />
</xsl:template


в second
Код: xml
1.
2.
3.
4.
5.
<xsl:template match="/">
  <xsl:apply-templates select="." mode="root"/>
    <xsl:value-of select="printer:printToConsole($varEntity)" />              // Entity{name=null}
    <xsl:value-of select="printer:printToConsole($someString)" />            // lalalalalala
</xsl:template>


или наоборот. Идея - шаблон один, а из него вызываем другой. А как именно - через apply-templates или через call-template - не так важно. Есть еще способы. Тут главный вопрос - зачем Вам две xsl?
...
Рейтинг: 0 / 0
xalam \ xsl \ передача объектов
    #38692531
alex021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_,

к сожалению не хочет ваш вариант работать )
идея в том, что первый файл трансформируется в форму, куда вводятся данные. затем, при отправке этой формы во втором файле происходит валидация. в случае невалидности происходит редирект на первый файл с указанием ошибок. в случае валидности формы, в xml записывается информация с формы.
...
Рейтинг: 0 / 0
xalam \ xsl \ передача объектов
    #38692541
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex021к сожалению не хочет ваш вариант работать )Так и говорит "не хочу работать!"? Что именно Вы сделали? Когда Вы вызываете трансформацию какой XSL указываете?
alex021идея в том, что первый файл трансформируется в формуДальше не читал. Трансформироваться могут данные. Данные - это XML файл. Правила трансформации описывает XSL. Вопрос - зачем Вам два набора правил?
alex021происходит редирект на первый файл с указанием ошибокОпять таки - редирект на XSL происходить не может
...
Рейтинг: 0 / 0
xalam \ xsl \ передача объектов
    #38693827
alex021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_,
спасибо. вроде решил проблему средствами Java
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / xalam \ xsl \ передача объектов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]