powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / текущая дата
17 сообщений из 17, страница 1 из 1
текущая дата
    #35217780
Galyam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем добрый день!!!
Помогите, пожалуйста, в следующем вопросе:как написать в xslt-преобразовании ,чтобы в xml для элемента DATE значением являлась текущая дата.
...
Рейтинг: 0 / 0
текущая дата
    #35221618
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по ходу, никак, только через параметры передавать.
...
Рейтинг: 0 / 0
текущая дата
    #35223571
Galyam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите ,плиз, каким образом через параметры.
...
Рейтинг: 0 / 0
текущая дата
    #35226159
Galyam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Люди добрые помогите написать.....Я новичок в этой области...в инете для чайников не смогла найти....
В xml-файле должно быть:
<DATE>yyyy-mm-dd</DATE>,где yyyy-mm-dd -текущая дата
...
Рейтинг: 0 / 0
текущая дата
    #35226267
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как формируется xml ? Руками или с помощью какой проги (если к примеру 1С то напиши чтоб дату выгружала). если руками то сторонний код придется писать, хоть батник хоть любой другой скрипт на любом доступном для тебя языке.
xsl - язык ПРЕОБРАЗОВАНИЯ, а не программирования, поэтому в нем ОЧЕНЬ много чего нет, если maXmo говорит что этого нет, значит нет. тобишь с помощью xslt ты дату получить не сможешь, единсвенный способ натравить xsl на xml И при этом передать в виже параметра дату, которую и обраотать и запихать в выходной файл.
...
Рейтинг: 0 / 0
текущая дата
    #35227662
Galyam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У нас формируется файл с помощью проги (ERP-система класса II iScala),в котором нет даты создания xml-файла.Как с помощью параметров вытащить эту дату??
...
Рейтинг: 0 / 0
текущая дата
    #35227676
Galyam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите в виде примера,с чего мне начать....
...
Рейтинг: 0 / 0
текущая дата
    #35228089
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="1.0"
  xmlns:ms="urn:schemas-microsoft-com:xslt"
  xmlns:script="http://mysyte.com.ua/script">

  <ms:script type="text/javascript" language="JavaScript" implements-prefix="script">
    function now() {
      dateTime = new Date(Date.parse(ADateTime));
      return dateTimeToStr(dateTime, 'yyyy-mm-ddThh:nn:ss');
    }
  </ms:script>

  <xsl:template match="...">
  ............
    <NOW>
      <xsl:value-of select="script:now()"/>
    </NOW>.
  ............
  </xsl:match>

функция dateTimeToStr это моя функция. Тебе придется написать что-то подобное
С уважением, Vasilisk
...
Рейтинг: 0 / 0
текущая дата
    #35229703
Galyam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое за подсказку....попробую реализовать..
Есть еще одна проблема:
привожу пример входного ,выходного файлов и файла трансформации
xslt-файл:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:inter="http://Epicor.com/InternalMessage/1.1"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:msg = "http://Epicor.com/Message/2.0"
exclude-result-prefixes="inter js msxsl"
xmlns:js='JScript functions'
xmlns:msxsl='urn:schemas-microsoft-com:xslt'>
<xsl:attribute-set name="DTA_NS">
<xsl:attribute name="xsi:noNamespaceSchemaLocation">D:\ASN.xsd</xsl:attribute>
</xsl:attribute-set>
<xsl:output method="xml" version="1.0"/>
<xsl:template match="inter:msg">
<xsl:element name="MESSAGE" use-attribute-sets="DTA_NS">
<xsl:apply-templates select="inter:req"/>
</xsl:element>
</xsl:template>
<xsl:template match="inter:req">
<HEAD>
<xsl:element name="MESSAGETYPE">AdvancedShipNotice</xsl:element>
</HEAD>
</xsl:template>
</xsl:stylesheet>

входной файл:
<msg:msg xmlns:msg="http://Epicor.com/InternalMessage/1.1">
<msg:req tag="proba">
</msg:req>
</msg:msg>

выходной файл:
<?xml version="1.0" encoding="UTF-16" ?>
<MESSAGE xsi:noNamespaceSchemaLocation="D:\ASN.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<HEAD xmlns:msg="http://Epicor.com/Message/2.0">
<MESSAGETYPE>AdvancedShipNotice</MESSAGETYPE>
</HEAD>
</MESSAGE>

А нам необходимо получить в виде:
<?xml version="1.0" encoding="UTF-16" ?>
<MESSAGE xsi:noNamespaceSchemaLocation="D:\ASN.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<HEAD>
<MESSAGETYPE>AdvancedShipNotice</MESSAGETYPE>
</HEAD>
</MESSAGE>
...
Рейтинг: 0 / 0
текущая дата
    #35230175
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У тебя ns не совпадают в xsl и xml , вот он и наследуется в выходной файл.
сравни
xsl:
Код: plaintext
<xsl:stylesheet  ... xmlns:msg = "http://Epicor.com/Message/2.0"
в xml:
Код: plaintext
<msg:msg xmlns:msg="http://Epicor.com/InternalMessage/1.1">
Сделай одинаковыми, проблема должна изчезнуть
...
Рейтинг: 0 / 0
текущая дата
    #35230325
Galyam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SuSaУ тебя ns не совпадают в xsl и xml , вот он и наследуется в выходной файл.
сравни
xsl:
Код: plaintext
<xsl:stylesheet  ... xmlns:msg = "http://Epicor.com/Message/2.0"
в xml:
Код: plaintext
<msg:msg xmlns:msg="http://Epicor.com/InternalMessage/1.1">
Сделай одинаковыми, проблема должна изчезнуть

Спасибо Вам огромное за помощь!!!!!!!!!!
Думала ,что с остальным я справлюсь по аналогии,но не получилось...
в секцию BODY/AAA подтягивается xmlns:msg="http://Epicor.com/InternalMessage/1.1

<?xml version="1.0"?>
<xsl:stylesheet xmlns:inter="http://Epicor.com/InternalMessage/1.1"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:msg = "http://Epicor.com/Message/2.0"
exclude-result-prefixes="inter js msxsl"
xmlns:js='JScript functions'
xmlns:msxsl='urn:schemas-microsoft-com:xslt'>
<xsl:attribute-set name="DTA_NS">
<xsl:attribute name="xsi:noNamespaceSchemaLocation">D:\ASN.xsd</xsl:attribute>
</xsl:attribute-set>
<xsl:output method="xml" version="1.0"/>
<xsl:template match="inter:msg">
<xsl:element name="MESSAGE" use-attribute-sets="DTA_NS">
<xsl:apply-templates select="inter:req"/>
</xsl:element>
</xsl:template>
<xsl:template match="inter:req">
<HEAD>
<xsl:element name="MESSAGETYPE">AdvancedShipNotice</xsl:element>
</HEAD>
<BODY>
<xsl:apply-templates select="inter:dta"/>
</BODY>
</xsl:template>
<xsl:template match="inter:dta">
<xsl:copy-of select="@* | node()"/>
</xsl:template>
</xsl:stylesheet>


входной файл:

<msg:msg xmlns:msg="http://Epicor.com/InternalMessage/1.1">
<msg:req tag="proba">
<msg:dta>
<AAA>
<AAAHead>
</AAAHead>
</AAA>
</msg:req>
</msg:msg>


выходной файл:
<?xml version="1.0" encoding="UTF-16" ?>
<MESSAGE xsi:noNamespaceSchemaLocation="D:\ASN.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<HEAD xmlns:msg="http://Epicor.com/Message/2.0">
<MESSAGETYPE>AdvancedShipNotice</MESSAGETYPE>
</HEAD>
<BODY>
<AAA xmlns:msg="http://Epicor.com/InternalMessage/1.1 ">
<AAAHead>
</AAAHead>
</AAA>
</BODY>
</MESSAGE>

должны получить:
<?xml version="1.0" encoding="UTF-16" ?>
<MESSAGE xsi:noNamespaceSchemaLocation="D:\ASN.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<HEAD>
<MESSAGETYPE>AdvancedShipNotice</MESSAGETYPE>
</HEAD>
<BODY>
<AAA>
<AAAHead>
</AAAHead>
</AAA>
</BODY>
</MESSAGE>
...
Рейтинг: 0 / 0
текущая дата
    #35231627
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты чего издеваешься?
написал же что ns не совпадает. Это значит что ?
Это значит, чтобы ns со своими префиксами не вылезали в выходной документ, нужно и префикс и само ns в обрабатывающем xsl документе написать такие же как в xml.
т.о.:
xml:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<msg:msg xmlns:msg="http://Epicor.com/InternalMessage/1.1">
<msg:req tag="proba">
<msg:dta>
<AAA>
<AAAHead>
</AAAHead>
</AAA>
</msg:req>
</msg:msg>
xsl:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
<?xml version="1.0"?>
<xsl:stylesheet xmlns:inter="http://Epicor.com/InternalMessage/1.1" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
exclude-result-prefixes="inter js msxsl"
xmlns:js='JScript functions'
xmlns:msxsl='urn:schemas-microsoft-com:xslt'
xmlns:msg="http://Epicor.com/InternalMessage/1.1">
<!-- ВОТ СЮДА СМОТРИ на последнюю строку-->
<xsl:attribute-set name="DTA_NS">
<xsl:attribute name="xsi:noNamespaceSchemaLocation">D:\ASN.xsd</xsl:attribute>
</xsl:attribute-set>
<xsl:output method="xml" version="1.0"/>
<xsl:template match="inter:msg">
<xsl:element name="MESSAGE" use-attribute-sets="DTA_NS">
<xsl:apply-templates select="inter:req"/>
</xsl:element>
</xsl:template>
<xsl:template match="inter:req">
<HEAD>
<xsl:element name="MESSAGETYPE">AdvancedShipNotice</xsl:element>
</HEAD>
<BODY>
<xsl:apply-templates select="inter:dta"/>
</BODY>
</xsl:template>
<xsl:template match="inter:dta">
<xsl:copy-of select="@* | node()"/>
</xsl:template>
</xsl:stylesheet>
должно помочь, проверить немогу, парсеров под руками нет.
...
Рейтинг: 0 / 0
текущая дата
    #35231695
Galyam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Такой дурой сейчас себя чувствую.......взяла старый пример.....и по новой скопировала.....
Не судите уж строго,Susa...
Когда вы ответили ,то сразу исправила и действительно,из разделов HEAD и BODY исчезла строка :msg
а в секции <AAA> осталась....

<HEAD>
<MESSAGETYPE>AdvancedShipNotice</MESSAGETYPE>
</HEAD>
<BODY>
<AAA xmlns:msg="http://Epicor.com/InternalMessage/1.1">
<AAAHead>
</AAAHead>
</AAA>
</BODY>
...
Рейтинг: 0 / 0
текущая дата
    #35232781
Galyam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите ,пожалуйста ,в этом последнем маленьком вопросике и я Вам буду очень благодарна и признательна....
Заранее спасибо!!!!
...
Рейтинг: 0 / 0
текущая дата
    #35234354
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хм.. надо спецификацию почитать поповоду <applay-templates/> и NS.
так как тебе нужно получить, можно сделать если вместо:
Код: plaintext
1.
2.
3.
4.
5.
6.
<BODY>
<xsl:apply-templates select="inter:dta"/>
</BODY>
</xsl:template>
<xsl:template match="inter:dta">
<xsl:copy-of select="@* | node()"/>
</xsl:template>
написать сразу:
Код: plaintext
1.
2.
3.
4.
<BODY>
<xsl:copy-of select="@* | node()"/>
</BODY>
</xsl:template>
При одном условии. Что входной xml корректен , а не как в примере приведен:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<msg:msg xmlns:msg="http://Epicor.com/InternalMessage/1.1">
<msg:req tag="proba">
<msg:dta>
<AAA>
<AAAHead>
</AAAHead>
</AAA>
</msg:dta> <!-- Изночально нехватало-->
</msg:req>
</msg:msg>
И еще один момент, если записать вместо того что у тебя есть , вот так:
Код: plaintext
<xsl:output method="html" version="1.0"/>
то выходная часть документа будет сразу структурирована, что позволит сделать документ более удобочитаемым.
...
Рейтинг: 0 / 0
текущая дата
    #35234372
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SuSaИ еще один момент, если записать вместо того что у тебя есть , вот так:
Код: plaintext
<xsl:output method="html" version="1.0"/>
то выходная часть документа будет сразу структурирована, что позволит сделать документ более удобочитаемым.
Если парсится msxml, то нифига он не структурирует. Разве, что xml он создает в одну строку, а html много строк, но начальные пробелы он все равно выкусывает
...
Рейтинг: 0 / 0
текущая дата
    #35235998
Galyam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не помогло.....
Все равно этот текст в <AAA> выходит
<AAA xmlns:msg="http://Epicor.com/InternalMessage/1.1 ">
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / текущая дата
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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