2014-09-02 69 views
-1

根據規範,如果An元素具有值爲true的屬性xsi:nil,則它可以是無效的。因此,例如,xsi:無爲真是空還是爲空?

<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <e1 xsi:nil="true"></e1> 
</root> 

如果我檢查,如果該元素(E1)包含文本或不一樣的東西:$e1=''爲空元素,以便將上面的XML返回真實與否?我相信它可以用xsi:nil來檢查元素是否爲空,並且上面的代碼將返回false。

回答

4

如果您的轉換可以識別架構並且源文檔經過模式驗證,那麼您可以使用fn:nilled()函數測試某個元素是否具有xsi:nil =「true」。

如果XSLT不支持模式,那麼xsi:nil就像其他任何屬性一樣。您可以使用測試

e1[@xsi:nil='true' and not(child::node())] 

確切的測試使用取決於您要檢查的具體條件。測試

e1[. = ''] 

例如將匹配所有以下;

<e1/> 
<e1 xsi:nil="true"/> 
<e1><f/></e1> 
<e1><!-- x --></e1> 
+0

XML世界中沒有這樣的東西,所以我不確定你的意思。關於你的第二句話,在任何模式有效的文檔中,具有xsi:nil =「true」的元素都將沒有文本節點或元素節點子元素。它可能有評論或處理指導兒童。一般來說,並非所有文檔都是模式有效的。 – 2014-09-03 19:21:10

+0

那麼這個問題的答案是「它會被當作......」嗎?取決於哪些軟件正在進行治療。在你的問題中你沒有提到任何數據庫軟件,所以如果這是關於某個數據庫軟件的問題,那麼你可能應該告訴我們哪一個。沒有XML軟件會將任何東西都視爲null,因爲null不是XML概念。 – 2014-09-04 14:12:42

+0

有多少次我必須告訴你,當你說「null」時,我不知道你的意思?沒有像「空元素」這樣的東西。 – 2014-09-04 20:47:03

相關問題