Помогите с преобразованием
От:
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
Пока на собственное сообщение не было ответов, его можно удалить.
Удалить