Помогите с преобразованием
От: AndrewС Украина  
Дата: 02.12.02 09:08
Оценка:
У меня структура вида:


<?xml  version="1.0" encoding="utf-8"?>
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <column1 Text="a1">
    <column2 Text="b1">
       <column3 Text="c1"/>
       <column3 Text="c2"/>
    </column2>
    <column2 Text="b2">
       <column3 Text="c3"/>
    </column2>
  </column1>
</ROOT>



Нужен XSL, который бы заменил каждое название элемента column1, column2, column3 на какое-то одно другое название, например col

То есть должно получится:

<?xml  version="1.0" encoding="utf-8"?>
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <col Text="a1">
    <col Text="b1">
       <col Text="c1"/>
       <col Text="c2"/>
    </col>
    <col Text="b2">
       <col Text="c3"/>
    </col>
  </col>
</ROOT>


Заранее благодарю.
wBr
Re: Помогите с преобразованием
От: Lloyd Россия  
Дата: 02.12.02 09:17
Оценка:
Здравствуйте, AndrewС, Вы писали:

Попробуйте вот так


<xsl:template match="starts-with(name(), 'column')">
  <col>
    <xsl:apply-templates/>
  </col>
</xsl:template>
<xsl:template match="* | @* | /">
  <xsl:copy>
    <xsl:apply-templates/>
  </xsl:copy>
</xsl:template>
Re[2]: Помогите с преобразованием
От: AndrewС Украина  
Дата: 02.12.02 10:05
Оценка:
Здравствуйте, Lloyd, Вы писали:

Не получается:

ERROR: 500 Internal Server Error
HResult: 0x80004005
Source: Microsoft XML Extensions to SQL Server
Description: SQLXML: error loading XSL stylesheet


Вызывал по разному. Где ошибка?
wBr
Re[3]: Помогите с преобразованием
От: Lloyd Россия  
Дата: 02.12.02 10:12
Оценка:
Здравствуйте, AndrewС, Вы писали:

AС>Здравствуйте, Lloyd, Вы писали:


AС>Не получается:


AС>
AС>ERROR: 500 Internal Server Error
AС>HResult: 0x80004005
AС>Source: Microsoft XML Extensions to SQL Server
AС>Description: SQLXML: error loading XSL stylesheet
AС>


AС>Вызывал по разному. Где ошибка?


А вот так?


<xsl:stylesheet>
  <xsl:template match="starts-with(name(), 'column')">
    <col>
      <xsl:apply-templates/>
    </col>
  </xsl:template>
  <xsl:template match="* | @* | /">
    <xsl:copy>
      <xsl:apply-templates/>
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>
Re[4]: Помогите с преобразованием
От: AndrewС Украина  
Дата: 02.12.02 11:01
Оценка:
Здравствуйте, Lloyd, Вы писали:

Кажется проблема здесь:
template match="starts-with(name(), 'column')"
Если ставлю template match=column1 то его соответственно и меняет. Если starts-with — то таже ошибка.
А starts-with — это XPath?
Как это сделать перебором?
wBr
Re[5]: Помогите с преобразованием
От: Lloyd Россия  
Дата: 02.12.02 11:04
Оценка:
Здравствуйте, AndrewС, Вы писали:

AС>Здравствуйте, Lloyd, Вы писали:


AС>Кажется проблема здесь:

AС>template match="starts-with(name(), 'column')"
AС>Если ставлю template match=column1 то его соответственно и меняет. Если starts-with — то таже ошибка.
AС>А starts-with — это XPath?
AС>Как это сделать перебором?

Совсем плехой сталь

Конечно-же надо писать


*[starts-with(name(), 'column')]


или


node()[starts-with(name(), 'column')]
Re[6]: Помогите с преобразованием
От: AndrewС Украина  
Дата: 02.12.02 11:25
Оценка:
Здравствуйте, Lloyd, Вы писали:

Это конечно хорошо. Но мне не полегчало. В Букс онлайн написано что XPath запрос starts-with() текущей версией SQL сервера(2000!) не поддерживается. Что делать?
wBr
Re[6]: Помогите с преобразованием
От: AndrewС Украина  
Дата: 02.12.02 12:07
Оценка:
Здравствуйте, Lloyd, Вы писали:

Заработало только получается вот так:

<?xml version="1.0" encoding="utf-8"?>
<root xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<col >
<col >
<col />
<col />
</col>
<col >
<col />
</col>
</col>
</root>

Text потерялся.
wBr
Re[6]: Помогите с преобразованием
От: AndrewС Украина  
Дата: 03.12.02 13:47
Оценка:
Здравствуйте, Lloyd, Вы писали:

Получилось вот так:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:template match="*[starts-with(name(), 'column')]">
    <col>
      <xsl:apply-templates select="@*" />
      <xsl:apply-templates/>
    </col>
  </xsl:template>
  <xsl:template match="* | @* | /">
    <xsl:copy>
      <xsl:apply-templates/>
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>


Спасибо! Тяжеловато по началу с XSL. Подскажите каие-нибудь статьи на русском для начинающих?
wBr
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.