簡體   English   中英

使用 SQL 服務器創建 XML 結構

[英]Creating XML structure with SQL Server

我正在嘗試為使用.xml格式的文件的演示軟件的某些版本的翻譯提供聖經。

我想創建這個結構的 xml 文件:

   <Bible>
     <book name="Gênesis" abbrev="gn" nchapters="50" >
       <chapter n="1">
          <verse n="1"> No princípio criou Deus o céu e a terra.</verse>
          <verse n="2"> A terra era sem forma e vazia; [...] a face das águas.</verse>
          <verse n="3"> Disse Deus: haja luz. E houve luz.</verse>
       </chapter>
       <chapter n="2">
     
         [...] 
     </book>
     <book name="Êxodo" abbrev="êx" nchapters="40" >
       <chapter n="1">
          <verse n="1"> No princípio criou Deus o céu e a terra.</verse>
          <verse n="2"> A terra era sem forma e vazia; [...] a face das águas.</verse>
          <verse n="3"> Disse Deus: haja luz. E houve luz.</verse>
     </chapter>
     <chapter n="2">

     [...]

    </book>

    [...]
   </Bible>

我有 2 張桌子:“書”、“詩”。

圖書

Book_id 姓名 縮寫 章節
1 創世紀 Gn 50
2 鯰魚 前任 40
... ... ... ...

詩句

ID 章節 文本
1 創世紀 1 1 No princípio criou Deus os céus...
2 創世紀 1 2 知乎...
... ... ... ... ...
1534 鯰魚 1 1 知乎...

我無法在生成此結構的 SQL 查詢中編寫代碼。 獲得解決此問題的代碼的任何幫助將不勝感激。

謝謝!

您可以使用FOR XML生成 XML,其中包含每個嵌套元素和屬性的子查詢。

 select
        b.name as '@name',
        b.abbrev as '@abbrev',
        b.chapters as '@nchapters',
        (select 
            v.chapter as '@n',
            (select 
               d.verse as 'verse/@n',
               d."text" as 'verse'
               from Verses d 
               where b.name = d.book
               and d.chapter = v.chapter
               for xml path(''), TYPE
              )
             from Verses v 
             where b.name = v.book
             group by v.chapter
             for xml path('chapter'), TYPE
        )
    from Books b
    for xml path('book'), TYPE, ROOT('Bible')

db<>fiddle here

輸入:

Book_id 姓名 縮寫 章節 ID 章節 文本
1 創世紀 Gn 50 1 創世紀 1 1 No princípio criou Deus os céus...
1 創世紀 Gn 50 2 創世紀 1 2 知乎...
1 創世紀 Gn 50 3 創世紀 2 1 測試第 1 節...
2 鯰魚 前任 40 4 鯰魚 1 1 測試第2節...

Output:

<Bible>
    <book name="Gênesis" abbrev="Gn" nchapters="50">
        <chapter n="1">
            <verse n="1">No princípio criou Deus os céus...</verse>
            <verse n="2">E a terra era sem forma e vazia...</verse>
        </chapter>
        <chapter n="2">
            <verse n="1">Test Verse 1...</verse>
        </chapter>
    </book>
    <book name="Êxodo" abbrev="Êx" nchapters="40">
        <chapter n="1">
            <verse n="1">Test Verse 2...</verse>
        </chapter>
    </book>
</Bible>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM