我正在尝试从sql查询直接获取html(TSQL,sql server 2008 r2)。 我在其中一个字段中跟随xml,我需要解析每日日程安排 ul列表,主题标题仅列出一次,而不是每个主题。我不允许改变xml数据的形式。
我应该如何更改此select子句来完成它?
select Day1Schedule = T.Item.query
('
for $a in //Schedule/Day[@Number="1"]/Topic
for $b in $a/Subject
return
<ul>
<li>
<strong>
{$a/Header/text()}
</strong>
</li>
<li>
{$b/text()}
</li>
</ul>
')
<Schedule>
<Day Number="1">
<Topic>
<Header>Topic1</Header>
<Subject>T1Subject1</Subject>
<Subject>T1Subject2</Subject>
<Subject>T1Subject3</Subject>
<Subject>T1Subject4</Subject>
<Subject>T1Subject5</Subject>
</Topic>
<Topic>
<Header>Topic2</Header>
<Subject>T2Subject1</Subject>
</Topic>
<Topic>
<Header>Topic3</Header>
<Subject>T3Subject1</Subject>
<Subject>T3Subject2</Subject>
<Subject>T3Subject3</Subject>
</Topic>
</Day>
<Day Number="2">
<Topic>
<Header>Topic1</Header>
<Subject>T1Subject1</Subject>
<Subject>T1Subject2</Subject>
<Subject>T1Subject3</Subject>
<Subject>T1Subject4</Subject>
<Subject>T1Subject5</Subject>
</Topic>
<Topic>
<Header>Topic2</Header>
<Subject>T2Subject1</Subject>
</Topic>
<Topic>
<Header>Topic3</Header>
<Subject>T3Subject1</Subject>
<Subject>T3Subject2</Subject>
<Subject>T3Subject3</Subject>
</Topic>
</Day>
<Day Number="3">
<Topic>
<Header>Topic1</Header>
<Subject>T1Subject1</Subject>
<Subject>T1Subject2</Subject>
<Subject>T1Subject3</Subject>
<Subject>T1Subject4</Subject>
<Subject>T1Subject5</Subject>
</Topic>
<Topic>
<Header>Topic2</Header>
<Subject>T2Subject1</Subject>
</Topic>
<Topic>
<Header>Topic3</Header>
<Subject>T3Subject1</Subject>
<Subject>T3Subject2</Subject>
<Subject>T3Subject3</Subject>
</Topic>
</Day>
</Schedule>
感谢您的任何想法?
答案 0 :(得分:1)
尝试这样的事情:
for $a in //Schedule/Day[@Number="1"]/Topic
return <ul>
<li><strong>{$a/Header/text()}</strong></li>
{for $b in $a/Subject
return <li>{$b/text()}</li>}
</ul>
每个主题只返回一次Header。