powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / помогите с xlst
9 сообщений из 9, страница 1 из 1
помогите с xlst
    #39226778
мальчики, как сделать автозамену в исходном файле NN_text на textNN
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
<?xml version="1.0" encoding="UTF-8"?>
...
    <aaa>
        <bbb>text</bbb>
        <ccc>NN_text</ccc>
    </aaa>
....
кусочек кода xlst 2.0, который обрабатывает этот фрагмент:
Код: plaintext
1.
2.
3.
4.
5.
6.
....
<xsl:for-each select="aaa">
    <xsl:for-each select="ccc">
            <b><xsl:apply-templates/></b>
    </xsl:for-each>
</xsl:for-each>
...
третий день сижу, не могу дать ладу в этом **** xlst
...
Рейтинг: 0 / 0
помогите с xlst
    #39226817
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<xsl:template match="text()">
  <xsl:choose>
    <xsl:when test=".='NN_text'">
      <xsl:value-of select="textNN"/>
    </xsl:when>
    <xsl:otherwise>
      <xsl:value-of select="."/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>
...
Рейтинг: 0 / 0
помогите с xlst
    #39227208
Екатерина Новикова
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
из-за глюка форума пришлось создать новый аккаунт

_Vasilisk_, нужно засунуть этот код внуть уже существующего, потому что это кусок огромного файла. и NN в переменной NN_text это цифры которые постоянно меняются внутри файла. наверно надо использовать функцию replace, но я не могу разобраться в синтаксисе
...
Рейтинг: 0 / 0
помогите с xlst
    #39227567
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Екатерина Новикованужно засунуть этот код внуть уже существующего, потому что это кусок огромного файлаОзвучьте тогда критерии
1) Что меняем?
2) На что меняем?
...
Рейтинг: 0 / 0
помогите с xlst
    #39229222
Екатерина Новикова
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,
В xml переменная ссс имеет множество значени вида NN_text ( 13_text, 14_text и т.д.) и затем они выводятся через for-each в таблицу. Нужно что бы во время вывода значения имели вид text_13, text_14 и т.д.
...
Рейтинг: 0 / 0
помогите с xlst
    #39229546
Фридрих
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Екатерина Новикова,

этот кусок кода
Код: xml
1.
2.
3.
4.
5.
<xsl:for-each select="aaa">
    <xsl:for-each select="ccc">
            <b><xsl:apply-templates/></b>
    </xsl:for-each>
</xsl:for-each>


не выводит ни чего в таблицу.
если я правильно понял, то нужно чтоб цифры были после текста!? Если так, то нужно прописать маленький шаблон с использованием substring() или substring-before() или substring-after() или всё сразу, главное что бы разделитель был одинаков, это может быть нижнее подчеркивание или тире, или одинаковое количество символов.
И покажи тот кусок кода, где выводиться значения <ccc>13_text</ccc>.
...
Рейтинг: 0 / 0
помогите с xlst
    #39230022
Екатерина Новикова
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фридрих,

вот исходники, xml: http://pastebin.com/gTuDDHmw , xsd: http://pastebin.com/WeVtd3Vx , в xslt: http://pastebin.com/wxdXurDJ на 4700 строке начинается вывод параметра SCOperationToolNumber значения value, в итоге в doc файл выводится: 8-Spindle-1A, 10-Spindle-1A и т.д., нужно что бы выводилось Т8, Т10 и т.д.
...
Рейтинг: 0 / 0
помогите с xlst
    #39230315
Фридрих
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Екатерина Новикова,

Вот код, который меняет значение в SCOperationToolNumber/Value во входном документе
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="@* | node()">
    <xsl:copy>
        <xsl:apply-templates select="@* | node()"/>  
    </xsl:copy>
</xsl:template>
<xsl:template match="SCOperationToolNumber/Value">
<xsl:variable name="T" select="."/>
    <xsl:copy>
<xsl:text>T</xsl:text>
<xsl:value-of select="substring-before($T,'-')" />
    </xsl:copy>
</xsl:template>
</xsl:stylesheet>


самое основное это то, что я
1. объявил переменную Т
2. добавил букву Т
3. извлек цифры которые есть до знака тире "-"
А вот как это всё вставить в шаблон, который делает Аltova - я не знаю.
Дело в том что в твоем преобразовании несколько раз возвращает SCOperationToolNumber/Value, не только на 4700 строке, там еще ниже есть поиск по узлам.
...
Рейтинг: 0 / 0
помогите с xlst
    #39230329
Фридрих
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя можно из без переменной как то так
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="@* | node()">
    <xsl:copy>
        <xsl:apply-templates select="@* | node()"/>  
    </xsl:copy>
</xsl:template>
<xsl:template match="SCOperationToolNumber/Value">
    <xsl:copy>
<xsl:text>T</xsl:text>
<xsl:value-of select="substring-before(.,'-')" />
    </xsl:copy>
</xsl:template>
</xsl:stylesheet>
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / помогите с xlst
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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