2011-09-05 63 views
1

我试图直接从SQL查询(TSQL,SQL Server 2008 R2)的HTML出来。 我有一个字段需要解析每天的日程安排,其中一个字段为 ul列表,主题标题只列出一次,而不是每个主题。我不允许改变XML数据的形式。Xquery里面为

我该如何改变这个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> 

感谢您的任何想法?

回答

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> 

它每个主题返回头一次。

+0

这就是它,我知道它可以做到,但还不完全理解语法。感谢您的快速回答 – vipasane