Tôi có dữ liệu như:XQuery: Tạo một phần tử mới với một tên đã cho?
<td>USERID</td>
<td>NAME</td>
<td>RATING</td>
tôi muốn biến nó thành:
<userid></userid>
<name></name>
<rating></rating>
Làm thế nào tôi có thể làm điều này?
Tôi có dữ liệu như:XQuery: Tạo một phần tử mới với một tên đã cho?
<td>USERID</td>
<td>NAME</td>
<td>RATING</td>
tôi muốn biến nó thành:
<userid></userid>
<name></name>
<rating></rating>
Làm thế nào tôi có thể làm điều này?
Sử dụng computed element constructor để tạo thành phần có giá trị lower-case
của các nút text
cho từng thành phần td
.
Một constructor yếu tố tính tạo ra một nút phần tử, cho phép cả hai tên và nội dung của nút được tính toán.
Vì lợi ích của ví dụ này, giả định rằng XML của bạn đang ở trong một tập tin gọi là foo.xml, bạn có thể làm một cái gì đó như thế này:
<doc>
{
for $name in doc('foo.xml')//td/text()
return element {lower-case($name)} {''}
}
</doc>
để sản xuất này:
<?xml version="1.0" encoding="UTF-8"?>
<doc>
<userid/>
<name/>
<rating/>
</doc>
Bạn cũng có thể đánh giá hàm lower-case()
như một phần của biểu thức XPATH thay vì hàm tạo phần tử, li ke này:
<doc>
{
for $name in doc('foo.xml')//td/text()/lower-case(.)
return element {$name} {''}
}
</doc>
return <doc>{
for $d in $doc/element()/text()
return element{fn:lower-case($d)} {}}</doc>
nơi $ doc lưu trữ các Xml.