|
|
|
XPath modify, SQL Server 2005
|
|||
|---|---|---|---|
|
#18+
Добрые сутки! Очень нужна ваша помощь! Немогу разобраться с сиуацией... Есть xml следующего вида: <?xml version="1.0" ?> <Transaction type="simulateOrder"> <OBJECT name="XMLContainerDataObject"> <ATTRIBUTE name="ErrorCode" access="rw" id="">ERROR_UNDEFINED</ATTRIBUTE> <OBJECT name="Order"> <ATTRIBUTE name="SupplierOrderId" /> <OBJECT name="ResultRelationCustomer"> <ATTRIBUTE name="BuyerId">999999</ATTRIBUTE> </OBJECT> </OBJECT> </OBJECT> </Transaction> Необходимо XPath запросом modify заменить значение узла ATTRIBUTE name="BuyerId" (т.е. 999999, например на 1). т.е выбрать значение я могу select @BuyerId= Convert(varchar(MAX),@xml.query('for $b in OBJECT//ATTRIBUTE where $b/@name="BuyerId" return $b/text()')), но чтобы зделать modify, мне нужно точно адресовать узел, а как это сделать - нипойму :(... Буду рад любому совету! Зараннее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2007, 11:52 |
|
||
|
XPath modify, SQL Server 2005
|
|||
|---|---|---|---|
|
#18+
SergeySh111Добрые сутки! Очень нужна ваша помощь! ... ... Необходимо XPath запросом modify заменить значение узла ATTRIBUTE name="BuyerId" (т.е. 999999, например на 1). [SRC=sql]DECLARE @myDoc xml SET @myDoc = '<?xml version="1.0" ?> <Transaction type="simulateOrder"> <OBJECT name="XMLContainerDataObject"> <ATTRIBUTE name="ErrorCode" access="rw" id="">ERROR_UNDEFINED</ATTRIBUTE> <OBJECT name="Order"> <ATTRIBUTE name="SupplierOrderId" /> <OBJECT name="ResultRelationCustomer"> <ATTRIBUTE name="BuyerId">999999</ATTRIBUTE> </OBJECT> </OBJECT> </OBJECT> </Transaction>' SELECT @myDoc SET @myDoc.modify(' replace value of (//OBJECT/ATTRIBUTE[@name="BuyerId"]/text())[1] with "1" ') SELECT @myDoc [/SRC] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2007, 18:18 |
|
||
|
XPath modify, SQL Server 2005
|
|||
|---|---|---|---|
|
#18+
Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2007, 18:40 |
|
||
|
XPath modify, SQL Server 2005
|
|||
|---|---|---|---|
|
#18+
У меня тоже проблема с изменением значения. Есть приблизительно такая структура: Код: plaintext 1. 2. 3. 4. 5. 6. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 16:45 |
|
||
|
XPath modify, SQL Server 2005
|
|||
|---|---|---|---|
|
#18+
Действительно, тут http://msdn2.microsoft.com/en-us/library/ms190675.aspx говорят, что для замены нужно обязательно какое-то значение и если значения нет, то ничего не изменится и ошибка не вызовется. Получается, что вообще никак нельзя изменить пустое значение, только через удаление пустого элемента и добавление его копии, но уже со значением? Как-то некрасиво, чтобы быть правдой :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 10:16 |
|
||
|
XPath modify, SQL Server 2005
|
|||
|---|---|---|---|
|
#18+
немного не на том парсере, но может быть сможешь переделать под себя <xsl:template match="//yar"> <xsl:if test="string-length(text()) =0"> <xsl:element name="yar"> <xsl:text>2005</xsl:text> </xsl:element> </xsl:if> </xsl:template> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 11:46 |
|
||
|
XPath modify, SQL Server 2005
|
|||
|---|---|---|---|
|
#18+
Увы, мне так не подойдет. Синтаксис не пускает. :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2007, 13:26 |
|
||
|
XPath modify, SQL Server 2005
|
|||
|---|---|---|---|
|
#18+
S_tetka... Получается, что вообще никак нельзя изменить пустое значение, только через удаление пустого элемента и добавление его копии, но уже со значением? Как-то некрасиво, чтобы быть правдой :( Не стоит выдумывать извращения на пустом месте (удалять, вставлять копии), достаточно просто уяснить себе суть происходящих действий: 1. у вашего узла year нет дочерних узлов типа text(), поэтому и заменять командой replace нечего (поэтому и при выполнении метода modify() ничего не происходит); 2. достаточно использовать команду insert типа так: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2007, 12:22 |
|
||
|
XPath modify, SQL Server 2005
|
|||
|---|---|---|---|
|
#18+
Ну спасибо за "извращения", но не я же их придумала. Меня как раз и возмути. А предложеного Вами способа в ОФИЦИАЛЬНЫХ документациях нет (например, на том же http://msdn2.microsoft.com). Кстати, может подскажите, где можно почитать более полное описание функционала? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2007, 14:02 |
|
||
|
XPath modify, SQL Server 2005
|
|||
|---|---|---|---|
|
#18+
S_tetkaНу спасибо за "извращения", но не я же их придумала. Меня как раз и возмути. А предложеного Вами способа в ОФИЦИАЛЬНЫХ документациях нет (например, на том же http://msdn2.microsoft.com). Кстати, может подскажите, где можно почитать более полное описание функционала? Опять выдумываете то, чего на самом деле нет: "... предложеного Вами способа в ОФИЦИАЛЬНЫХ документациях нет ...", а откуда же я по вашему его взял? Вот - практически весь раздел выше по иерархии от конкретного метода SQL Server 2005 Books Online ... insert (XML DML) Обидчивость, конечно, дело хорошее (про "извращения" там посетовать и все-такое, извините, если задело), но лучше для дела ее все-таки будет заменить, хотя бы, "усидчивостью" при чтении документации... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2007, 15:51 |
|
||
|
|

start [/forum/topic.php?fid=14&msg=34353330&tid=1334433]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
42ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 307ms |

| 0 / 0 |
