溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Java中XML Namespace命名空間的示例分析

發(fā)布時(shí)間:2021-08-17 09:18:00 來(lái)源:億速云 閱讀:584 作者:小新 欄目:開發(fā)技術(shù)

這篇文章給大家分享的是有關(guān)Java中XML Namespace命名空間的示例分析的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來(lái)看看吧。

根據(jù)Namespaces in XML W3C 推薦標(biāo)準(zhǔn)的定義,XML命名空間是由國(guó)際化資源標(biāo)識(shí)符 (IRI) 標(biāo)識(shí)的 XML 元素和屬性集合;該集合通常稱作 XML“詞匯”。

定義 XML 命名空間的主要?jiǎng)訖C(jī)之一是在使用和重用多個(gè)詞匯時(shí)避免名稱沖突。XML 模式用于為 XML 實(shí)例創(chuàng)建一個(gè)詞匯并頻繁使用命名空間。因此,正確理解命名空間概念對(duì)于從總體上理解 XML 模式和實(shí)例驗(yàn)證至關(guān)重要。

命名空間在多個(gè)方面類似于 Java 中的程序包:

  • Java 中的程序包可以包含許多可重用的類和接口。同樣,XML 中的命名空間可以有許多可重用的元素和屬性。

  • 要使用程序包中的類或接口,必須使用程序包名稱完全限定該類或接口。同樣,要使用命名空間中的元素或?qū)傩裕仨毷褂妹臻g完全限定該元素或?qū)傩浴?/p>

  • Java 程序包可能有一個(gè)內(nèi)部類,該類并不直接位于程序包內(nèi)部,而是借助它的外圍類“屬于”該程序包。命名空間也是如此:某些元素或?qū)傩钥赡懿⒉恢苯釉诿臻g中,而是借助它的父元素或外圍元素而屬于命名空間。這是一個(gè)傳遞關(guān)系。如果桌子上有一本書,而桌子在地面上,則根據(jù)傳遞關(guān)系,這本書位于地面上;盡管這本書并非 直接位于地面上。

因此,可以看出 XML 概念中的命名空間與 Java 中的程序包并無(wú)多大區(qū)別。這種對(duì)比旨在簡(jiǎn)化對(duì) XML 中命名空間的了解,并幫助您直觀認(rèn)識(shí)命名空間的概念。

在本文中,您將了解:

  • 命名空間在 XML 中的作用

  • 如何聲明和使用命名空間

  • 默認(rèn)命名空間與無(wú)命名空間之間的區(qū)別

  • 如何使用 XML 模式創(chuàng)建命名空間,以及

  • 命名空間中的限定和非限定元素/屬性之間的區(qū)別。

聲明和應(yīng)用命名空間

命名空間被聲明為元素的屬性。并不一定只在根元素聲明命名空間;而是可以在 XML 文檔中的任何元素中進(jìn)行聲明。聲明的命名空間的范圍起始于聲明該命名空間的元素,并應(yīng)用于該元素的所有內(nèi)容,直到被具有相同前綴名稱的其他命名空間聲明覆蓋—其中,元素內(nèi)容是指該元素的 <opening-tag> 和 </closing-tag> 之間的內(nèi)容。命名空間聲明如下:

<someElement xmlns:pfx="http://www.foo.com" />

在屬性xmlns:pfx 中,xmlns類似于一個(gè)保留字,它只用于聲明命名空間。換言之,xmlns用于綁定命名空間,但其本身并不綁定到任何命名空間。因此,以上示例實(shí)際上是將前綴“pfx”與命名空間“http://www.foo.com”綁定在一起。

通常將 XSD 或 XS 用作 XML 模式命名空間的前綴,但具體使用什么前綴完全取決于個(gè)人。您可以選擇將前綴 ABC 用于 XML 模式命名空間,這是合法的,但沒有什么意義。使用有意義的命名空間前綴增強(qiáng)了 XML 文檔的清晰性。請(qǐng)注意,前綴只用作占位符,并且必須通過可以識(shí)別命名空間的 XML 分析器進(jìn)行解釋才能使用綁定到該前綴的實(shí)際命名空間。在 Java 類比中,命名空間綁定可以比作聲明一個(gè)變量,并且每當(dāng)引用該變量時(shí),它將被所賦與的值替換。

在上一個(gè)命名空間聲明示例中,每當(dāng)在命名空間范圍中引用前綴“pfx”時(shí),它將被解釋為綁定到實(shí)際的命名空間 (http://www.foo.com):

在 Java 中:Stringpfx = "http://www.library.com"

在 XML 中:<someElementxmlns:pfx="http://www.foo.com"/>

盡管命名空間通??瓷先ハ?URL,但這并不意味著實(shí)際聲明和使用命名空間時(shí)一定要連接到互聯(lián)網(wǎng)上。實(shí)際上,通常將命名空間用作可以在互連網(wǎng)空間中共享詞匯和不顯示內(nèi)容的虛擬“容器”。在互連網(wǎng)空間中,URL 是唯一的—因此,您通常選擇使用 URL 來(lái)唯一標(biāo)識(shí)命名空間。在瀏覽器中鍵入命名空間 URL 并不意味著它將顯示該命名空間中的所有元素和屬性;它只是一個(gè)概念。

但這里存在一種誤解:盡管 Namespaces in XML W3C 推薦標(biāo)準(zhǔn)聲明該命名空間名稱應(yīng)為 IRI,但它對(duì)此并無(wú)強(qiáng)制規(guī)定。因此,我還可以使用以下代碼:

<someElement xmlns:pfx=" foo" />

該代碼完全合法。

至此應(yīng)明了,要使用命名空間,首先應(yīng)使用前綴綁定將其綁定,然后在需要時(shí)使用該前綴。但為什么不能從一開始便使用命名空間限定元素或?qū)傩阅??首先,由于命名空間(作為 IRI)非常長(zhǎng),因此毫無(wú)疑問會(huì)使 XML 文檔雜亂不堪。第二,也是最重要的,它可能對(duì)語(yǔ)法造成嚴(yán)重影響,或者具體一點(diǎn)說(shuō),可能對(duì) XML 的生產(chǎn)規(guī)則造成嚴(yán)重影響—原因是 IRI 可能包含XML 1.0 W3C 推薦標(biāo)準(zhǔn)不允許在 XML 標(biāo)記中使用的字符。

無(wú)效) <http://www.library.com:Book />
有效) <lib:Book xmlns:lib="http://www.library.com" />

下面的元素 Title 和 Author 與命名空間http://www.library.com關(guān)聯(lián):

<?xml version="1.0"?>
<Book xmlns:lib="http://www.library.com">
    <lib:Title>Sherlock Holmes</lib:Title>
    <lib:Author>Arthur Conan Doyle</lib:Author>
</Book>

在下面的示例中,Sherlock Holmes - IIISherlock Holmes - I的元素TitleAuthor與命名空間http://www.library.com關(guān)聯(lián),Sherlock Holmes - II的元素TitleAuthor與命名空間http://www.otherlibrary.com關(guān)聯(lián)。

<?xml version="1.0"?>
<Book xmlns:lib="http://www.library.com">
    <lib:Title>Sherlock Holmes - I</lib:Title>
    <lib:Author>Arthur Conan Doyle</lib:Author>
    <purchase xmlns:lib="http://www.otherlibrary.com">
        <lib:Title>Sherlock Holmes - II</lib:Title>
        <lib:Author>Arthur Conan Doyle</lib:Author>
    </purchase>
    <lib:Title>Sherlock Holmes - III</lib:Title>
    <lib:Author>Arthur Conan Doyle</lib:Author>
</Book>

Namespaces in XML W3C 推薦標(biāo)準(zhǔn)規(guī)定了某些命名空間約束:

以三字母序列x、ml(采用任何大小寫組合)開頭的前綴被保留,供 XML 和 XML 相關(guān)的規(guī)范使用。盡管這不是一個(gè)嚴(yán)重錯(cuò)誤,但綁定此類前綴并不可取。前綴xml根據(jù)定義綁定到命名空間名稱http://www.w3.org/XML/1998/namespace。只有已聲明并綁定到命名空間的前綴才能使用。(是否曾經(jīng)試過在 Java 中使用沒有聲明的變量?)

以下代碼違反了這些約束:

<?xml version="1.0"?>
<Book xmlns:XmlLibrary="http://www.library.com">
    <lib:Title>Sherlock Holmes - I</lib:Title>
    <lib:Author>Arthur Conan Doyle</lib:Author>
</Book>

[錯(cuò)誤]:前綴 lib 未綁定到命名空間。
[不可取]:前綴 XmlLibrary 以“Xml”開頭。

單個(gè)默認(rèn)命名空間(而非多個(gè)默認(rèn)命名空間)

重復(fù)限定一個(gè)要在命名空間中使用的元素或?qū)傩钥赡軙?huì)非常麻煩。這種情況下,可以聲明一個(gè) {默認(rèn)命名空間}。記住,無(wú)論在任何時(shí)候都只能存在一個(gè) {默認(rèn)命名空間}。因此,術(shù)語(yǔ)“多個(gè)默認(rèn)命名空間”在實(shí)際上是不正確的。

聲明一個(gè) {默認(rèn)命名空間} 意味著,如果 {默認(rèn)命名空間} 聲明范圍內(nèi)的任何元素未使用前綴顯式限定,則該元素將被隱式限定。與帶前綴的命名空間一樣,{默認(rèn)命名空間} 也可以被覆蓋。{默認(rèn)命名空間} 聲明如下:

<someElement xmlns="http://www.foo.com"/>
<?xml version="1.0"?>
<Book xmlns="http://www.library.com">
    <Title>Sherlock Holmes</Title>
    <Author>Arthur Conan Doyle</Author>
</Book>

這種情況下,元素Book、TitleAuthor與命名空間http://www.library.com關(guān)聯(lián)。

記住,命名空間的范圍起始于聲明該命名空間的元素。因此,元素 Book 還與 {默認(rèn)命名空間}關(guān)聯(lián),這是因?yàn)樗鼪]有前綴。

<?xml version="1.0"?>
<Book xmlns="http://www.library.com">
    <Title>Sherlock Holmes - I</Title>
    <Author>Arthur Conan Doyle</Author>
    <purchase xmlns="http://www.otherlibrary.com">
        <Title>Sherlock Holmes - II</Title>
        <Author>Arthur Conan Doyle</Author>
    </purchase>
    <Title>Sherlock Holmes - III</Title>
    <Author>Arthur Conan Doyle</Author>
</Book>

在以上的示例中,Sherlock Holmes - IIISherlock Holmes - I的元素Book、TitleAuthor與命名空間http://www.library.com關(guān)聯(lián),Sherlock Holmes - II的元素 purchase、TitleAuthor與命名空間http://www.otherlibrary.com關(guān)聯(lián)。

默認(rèn)命名空間和屬性

默認(rèn)命名空間不應(yīng)用于屬性;因此,要將命名空間應(yīng)用于屬性,必須顯式限定該屬性。此處的屬性isbn{沒有命名空間},而屬性cover與命名空間http://www.library.com關(guān)聯(lián)。

<?xml version="1.0"?>
<Book isbn="1234"
      pfx:cover="hard"
      xmlns="http://www.library.com"
      xmlns:pfx="http://www.library.com">
    <Title>Sherlock Holmes</Title>
    <Author>Arthur Conan Doyle</Author>
</Book>

取消聲明命名空間

Namespaces in XML 1.0 W3C 推薦標(biāo)準(zhǔn)不允許取消綁定已經(jīng)綁定的前綴,而 Namespaces in XML 1.1 W3C 推薦標(biāo)準(zhǔn)則允許這樣做。1.0 沒有理由不允許取消綁定,不過該錯(cuò)誤已經(jīng)在 1.1 中得到修正。不必知道此差別,這是因?yàn)橹С?Namespaces in XML 1.1 的 XML 分析器并不多。

盡管取消綁定帶前綴的命名空間有一些差別,但這兩個(gè)版本均允許您取消綁定或刪除已聲明的 {默認(rèn)命名空間}:用其他 {默認(rèn)命名空間} 聲明(覆蓋聲明中的命名空間為空)覆蓋已聲明的 {默認(rèn)命名空間}。取消綁定命名空間與未聲明命名空間具有同樣的效果。此處的Sherlock Holmes - IIISherlock Holmes - I的元素Book、TitleAuthor與命名空間http://www.library.com關(guān)聯(lián),而Sherlock Holmes - II的元素 purchase、TitleAuthor{沒有命名空間}:

<someElement xmlns="" />
<?xml version="1.0"?>
<Book xmlns="http://www.library.com">
    <Title>Sherlock Holmes - I</Title>
    <Author>Arthur Conan Doyle</Author>
    <purchase xmlns="">
        <Title>Sherlock Holmes - II</Title>
        <Author>Arthur Conan Doyle</Author>
    </purchase>
    <Title>Sherlock Holmes - III</Title>
    <Author>Arthur Conan Doyle</Author>
</Book>

此處是根據(jù) XML 1.0 規(guī)范中的命名空間取消綁定前綴的無(wú)效示例,而根據(jù) XML 1.1 中的命名空間取消綁定前綴則是有效的:

<purchase xmlns:lib="">

從此處開始,前綴lib不能在 XML 文檔中使用,因?yàn)橹灰谠?tt>purchase的范圍內(nèi),它就保持未聲名狀態(tài)。當(dāng)然,您完全可以再次定義它。

無(wú)名稱空間

如果范圍中沒有默認(rèn)命名空間,便不存在命名空間。{默認(rèn)命名空間} 是使用xmlns顯式聲明的命名空間。如果未使用xmlns聲明 {默認(rèn)命名空間},則不能說(shuō)元素位于 {默認(rèn)命名空間} 中。這種情況下,我們可以說(shuō)元素位于 {無(wú)命名空間} 中。當(dāng)已聲明的 {默認(rèn)命名空間} 被取消聲明時(shí),也將應(yīng)用 {無(wú)命名空間}。

摘要:

  • 聲明的命名空間的范圍起始于聲明該命名空間的元素,并應(yīng)用于該元素的所有內(nèi)容,直到被具有相同前綴名稱的其他命名空間聲明覆蓋

  • 帶前綴的命名空間和 {默認(rèn)命名空間} 都可以被覆蓋。

  • 帶前綴的命名空間和 {默認(rèn)命名空間} 都可以被取消聲明。

  • {默認(rèn)命名空間} 不直接應(yīng)用于屬性。

  • 僅當(dāng)顯式聲明 {默認(rèn)命名空間} 時(shí),該命名空間才存在。如果未聲明默認(rèn)命名空間,則不應(yīng)使用術(shù)語(yǔ) {默認(rèn)命名空間}。

  • 如果范圍中沒有默認(rèn)命名空間,便不存在命名空間。

命名空間和 XML 模式

到目前為止,我們已經(jīng)了解了如何聲明和使用現(xiàn)有命名空間?,F(xiàn)在,讓我們了解如何創(chuàng)建一個(gè)新命名空間,并使用 XML 模式將元素和屬性添加到其中。

XML 模式首先是一個(gè) XML。換言之,同任何其他 XML 文檔一樣,XML 模式使用元素和屬性構(gòu)建。此“構(gòu)建材料”必須出自命名空間http://www.w3.org/2001/XMLSchema,它是已聲明和保留的命名空間,其中包含W3C XML 模式結(jié)構(gòu)規(guī)范和W3C XML 模式數(shù)據(jù)類型規(guī)范中定義的元素和屬性。不應(yīng)將元素或?qū)傩蕴砑拥皆撁臻g。

使用這些構(gòu)建塊,可以根據(jù)需要?jiǎng)?chuàng)建新元素和屬性,并對(duì)這些元素和屬性附加所需的約束,并將其保留在某個(gè)命名空間中。(請(qǐng)參見圖 1。)XML 模式將此特殊命名空間稱作 {目標(biāo)命名空間},即新建的元素和屬性將駐留到的命名空間。

Java中XML Namespace命名空間的示例分析

圖 1:XML 模式命名空間中的元素和屬性用于編寫 XML 模式文檔,

該文檔生成由用戶定義的元素和屬性并將其置于 {目標(biāo)命名空間} 中。

此 {目標(biāo)命名空間} 隨后用于驗(yàn)證 XML 實(shí)例。

此 {目標(biāo)命名空間} 從 XML 實(shí)例中引用,以確保實(shí)例文檔的有效性。(請(qǐng)參見圖 2。)在驗(yàn)證過程中,驗(yàn)證器驗(yàn)證實(shí)例中所用的元素/屬性是否存在于已聲明的命名空間中,并檢查是否對(duì)其結(jié)構(gòu)和數(shù)據(jù)類型存在其他約束。

Java中XML Namespace命名空間的示例分析

圖 2:從 XML 模式到 XML 模式實(shí)例

限定或未限定

在 XML 模式中,我們可以選擇指定實(shí)例文檔是必須限定所有元素和屬性,還是只限定全局聲明的元素和屬性。無(wú)論做出什么樣的選擇,都將驗(yàn)證整個(gè)實(shí)例。那么,我們?yōu)槭裁从袃蓚€(gè)選擇呢?

答案是“可管理性”。當(dāng)我們選擇限定時(shí),我們指定實(shí)例中的所有元素和屬性都必須有一個(gè)命名空間,這將增強(qiáng)實(shí)例的命名空間復(fù)雜性。比如,當(dāng)因?qū)⒛承┚植柯暶髯優(yōu)槿致暶骱?將某些全局聲明變?yōu)榫植柯暶鞫薷牧四J綍r(shí),根本不會(huì)影響實(shí)例文檔。相反,如果選擇非限定,則指定只有實(shí)例中全局聲明的元素和屬性才必須具有命名空間,從而隱藏實(shí)例的命名空間復(fù)雜性。但在此情形下,比如,當(dāng)因?qū)⒛承┚植柯暶髯優(yōu)槿致暶骱?將某些全局聲明變?yōu)榫植柯暶鞫薷牧四J綍r(shí),將影響所有實(shí)例文檔 — 且實(shí)例不再有效。如果試圖根據(jù)已修改的 XML 模式驗(yàn)證該實(shí)例,則 XML 模式驗(yàn)證器將報(bào)告驗(yàn)證錯(cuò)誤。因此,必須根據(jù) XML 模式中所作的修改修正命名空間,才能重新使該實(shí)例有效。

<?xml version="1.0" encoding="US-ASCII"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
        xmlns:tns="http://www.library.com"
        targetNamespace="http://www.library.com"
        elementFormDefault="qualified">
    attributeFormDefault="unqualified">
    <element name="Book" type="tns:BookType" />
    <complexType name="BookType">
        <sequence>
            <element name="Title" type="string" />
            <element name="Author" type="string" />
        </sequence>
    </complexType>
</schema>

元素<schema>的最近子元素為全局聲明,而其他元素則為局部聲明。在以上示例中,BookBookType被全局聲明,而TitleAuthor則被局部聲明。

可以通過將模式元素屬性elementFormDefaultattributeFormDefault設(shè)置為qualified或unqualified 表示在限定和非限定之間的選擇。

elementFormDefault   = (qualified | unqualified) :unqualified
attributeFormDefault = (qualified | unqualified) :unqualified

當(dāng)將elementFormDefault設(shè)置為qualified時(shí),它表示在該語(yǔ)法的實(shí)例中,必須使用前綴或通過設(shè)置 {默認(rèn)命名空間} 來(lái)顯式限定所有元素。unqualified設(shè)置意味著只有全局聲明的元素才必須被顯式限定,而局部聲明的元素不得被限定。在此情形下,限定一個(gè)局部聲明是錯(cuò)誤的。同樣,將attributeFormDefault設(shè)置為qualified時(shí),必須使用前綴顯式限定實(shí)例文檔中的所有屬性。

注意,{默認(rèn)命名空間} 不應(yīng)用于屬性;因此,不能使用 {默認(rèn)命名空間} 聲明限定屬性。Unqualified好像暗示通過包含的元素位于命名空間中。這很有趣,對(duì)吧?

在下圖中,概念符號(hào)空間類似于命名空間分區(qū)的非規(guī)范性概念。例如,如果將命名空間比作電冰箱,那么符號(hào)空間就是冰箱中的架子。就像架子對(duì)電冰箱中的整個(gè)空間進(jìn)行分區(qū)一樣,符號(hào)空間對(duì)命名空間進(jìn)行分區(qū)。

命名空間中有三個(gè)主要分區(qū):一個(gè)用于全局元素聲明,一個(gè)用于全局屬性聲明,一個(gè)用于全局類型聲明 (complexType/simpleType)。這種安排表示,全局元素、全局屬性和全局類型可以具有相同的名稱,并可以在{目標(biāo)命名空間}中共存而不發(fā)生任何名稱沖突。此外,每個(gè)全局元素和全局 complexType 擁有其自己的符號(hào)空間來(lái)包含局部聲明。

讓我們來(lái)看看屬性對(duì)elementFormDefaultattributeFormDefault的四種可能的值組合。

情形 1:elementFormDefault=qualified, attributeFormDefault=qualified

Java中XML Namespace命名空間的示例分析

此處,{目標(biāo)命名空間} 直接包含所有元素和屬性;因此在該情形中,必須限定所有元素和屬性。

情形 2:elementFormDefault=qualified, attributeFormDefault=unqualified

Java中XML Namespace命名空間的示例分析

此處,{目標(biāo)命名空間} 直接包含所有元素,且這些元素的相應(yīng)屬性包含在相應(yīng)元素的符號(hào)空間中。因此,在該情形中,只須限定元素,而不得限定屬性,除非屬性是全局聲明的。

情形 3:elementFormDefault=unqualified, attributeFormDefault=qualified

Java中XML Namespace命名空間的示例分析

此處,{目標(biāo)命名空間} 直接包含所有屬性和僅全局聲明的元素,同時(shí)這些元素在其符號(hào)空間中包含其子元素。因此,在該情形中,只虛限定全局聲明的元素和所有屬性。

情形 4:elementFormDefault=unqualified, attributeFormDefault=unqualified

Java中XML Namespace命名空間的示例分析

此處,{目標(biāo)命名空間} 直接包含僅在全局聲明的元素,同時(shí)這些元素在其符號(hào)空間中包含其子元素。每個(gè)元素在其符號(hào)空間中包含相應(yīng)的屬性;因此,在該情形中,只需限定僅在全局聲明的元素和屬性。

以上各圖用于直觀說(shuō)明命名空間內(nèi)直接包含的內(nèi)容或傳遞式包含的內(nèi)容(取決于elementFormDefault/attributeFormDefault的值)。該設(shè)置表示直接位于{目標(biāo)命名空間}中的元素/屬性必須在相應(yīng)的 XML 實(shí)例中擁有一個(gè)與其關(guān)聯(lián)的命名空間,而未直接(傳遞式)位于{目標(biāo)命名空間}中的元素/屬性不得在相應(yīng)的 XML 實(shí)例中擁有一個(gè)與其關(guān)聯(lián)的命名空間。

目標(biāo)命名空間和無(wú)目標(biāo)命名空間

現(xiàn)在,我們知道 XML 模式創(chuàng)建新元素和屬性并將其置于稱作 {目標(biāo)命名空間} 的命名空間中。但如果在該模式中未指定 {目標(biāo)命名空間} 又會(huì)怎么樣?如果未指定屬性targetNamespace,則將不存在 {目標(biāo)命名空間} — 這是合法的 —但在targetNamespace屬性中指定一個(gè)空 URI 則是“非法”的。

例如,以下代碼無(wú)效。不能為 {目標(biāo)命名空間} 指定一個(gè)空 URI:

<schematargetNamespace="". . .>

在此情形中,如果不存在 {目標(biāo)命名空間},則如前所述,則將新建的元素和屬性保存在 {無(wú)命名空間} 中。(使用術(shù)語(yǔ) {默認(rèn)命名空間} 是錯(cuò)誤的。)要驗(yàn)證相應(yīng)的 XML 實(shí)例,相應(yīng)的 XML 實(shí)例必須使用http://www.w3.org/2001/XMLSchema-instance命名空間中的noNamespaceSchemaLocation屬性來(lái)引用沒有目標(biāo)命名空間的 XML 模式。

感謝各位的閱讀!關(guān)于“Java中XML Namespace命名空間的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI