2013-03-03 227 views
2

什麼是XPath數據模型中的屬性節點?什麼時候一個特定的節點成爲一個屬性節點?什麼是屬性節點

如果任何機構可以提供一個非常有用的屬性節點的例子。

在此先感謝。

+0

野獸,你需要學習一些XML的基礎知識。這對您比單獨提問更有用。 – 2013-03-03 15:36:54

+0

Dimitre。我最近開始學習XML,XPath和XSLT。如果你能給我提供任何學習XML的好鏈接,那麼這對我來說是非常有用的。 – Beast 2013-03-03 16:17:50

+0

野獸,我可以爲您提供良好的XSLT/XPath書籍的鏈接,但他們都假設您已經知道XML是什麼:http://stackoverflow.com/questions/339930/any-good-xslt-tutorial-book- blog-site-online/341589#341589 – 2013-03-03 16:43:23

回答

1

的OP已經澄清了評論,他的問題是:

是否有可能與任何父元素創建屬性節點?

是,在XSLT 2.0一個可以寫:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<xsl:variable name="vAttr" as="attribute()"> 
    <xsl:attribute name="x">y</xsl:attribute> 
</xsl:variable> 

<xsl:template match="/*"> 
    <xsl:copy> 
     <xsl:copy-of select="$vAttr"/> 
    </xsl:copy> 
</xsl:template> 
</xsl:stylesheet> 

當這種轉變被應用在下面的XML文檔:

<t/> 

想要的,正確的結果生產

<t x="y"/> 

因此,屬性被創建爲一個獨立的項目,沒有任何父元素。然後,我們可以將它的一個實例複製到任何元素

+0

感謝Dimitre爲您提供的所有幫助! – Beast 2013-03-04 05:42:48

+0

@野獸,不客氣。 – 2013-03-04 06:34:06

0

在下面bar="baz"的XML是具有名稱bar和值baz一個屬性:

<foo bar="baz"/> 

的屬性不「成爲」的屬性;它不是屬性就是屬性。

要訪問的屬性在XPath中,你可以使用@(這只是爲attribute::軸的快捷方式):

/foo/@bar 

也看到這些鏈接對XML基礎知識多一點信息。

+0

謝謝丹尼爾。但在上面的例子中,foo會被稱爲屬性節點嗎? – Beast 2013-03-03 08:13:42

+0

@Beast - 不,'foo'是一個元素節點。 – 2013-03-03 08:15:06

+0

@Beast - 有關不同類型節點的更多信息,請參閱上面的Datamodel.html鏈接。 – 2013-03-03 08:16:37

2

它是保持所有匹配的屬性的屬性值的節點。例如,如果您有以下標籤:

<tag name="foo"> 
    <child>Bar</child> 
</tag> 

然後XPath查詢//@name將返回「foo」的結果。如果有n標籤具有該屬性,它將獲取屬性值的所有n

屬性節點本身由兩部分組成 - 名稱和值。因此,在上面的例子中,它將是name="foo"

+0

感謝您的回覆cthulhu。在你的例子中,名字是屬性節點,標籤是父元素。我對你的答案的理解是正確的嗎?我的另一個問題是,是否有可能創建沒有任何父元素的屬性節點?如果可能,你能提供一個例子嗎? – Beast 2013-03-03 16:15:25

+0

@Beast - 在XML中,你無法做到這一點,並且沒有邏輯背後的邏輯。正如Dimitre提到的那樣,您可以在XSLT中將屬性作爲獨立對象應用於符合特定條件的某些元素,因此當文檔轉換時,此屬性將被附加到元素。但是,它又與XML本身無關。 – cth 2013-03-03 19:29:39

+0

謝謝克蘇魯! – Beast 2013-03-04 05:11:33