1
我在使用XMLDataSource
構建遞歸菜單時出現問題,當我嘗試使用XPath
時。當XPath=""
然後菜單工作正常顯示根元素和它下面的所有層次結構。但我需要該菜單至少從第二層級開始。 XML的架構文件中包含的定義:使用XPath構建具有遞歸元素的分層菜單
<xs:element name="Menu" type="TopMenuType"/>
<xs:element name="MenuItem" type="TopMenuItemType"/>
<xs:complexType name="TopMenuItemType">
<xs:sequence>
<xs:element type="TopMenuItemType" name="MenuItem" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute type="xs:string" name="Caption" default=""/>
</xs:complexType>
<xs:complexType name="TopMenuType">
<xs:sequence>
<xs:element type="TopMenuItemType" name="MenuItem" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
而且XML文件本身根據該架構包含數據:
<Menu xmlns="http://tempuri.org/TopMenuData.xsd">
<MenuItem Caption="Profile">
<MenuItem Caption="Regulatory Transactions"></MenuItem>
<MenuItem Caption="Work Management"></MenuItem>
<MenuItem Caption="Work Queues"></MenuItem>
</MenuItem>
<MenuItem Caption="Message Queues" URL="MQ.aspx">
<MenuItem Caption="Appointment Queues">
<MenuItem Caption="Termination Queues"></MenuItem>
<MenuItem Caption="Filling Status"></MenuItem>
</MenuItem>
</MenuItem>
當我嘗試賦值的XPath(類似/Menu
,//MenuItem
,/MenuItem
,/Menu/MenuItem
),則Menu控件在設計時顯示There was an error rendering the control
,並且在運行時不顯示任何內容。
我試着在XSD定義中使用屬性ref
。它並沒有幫助我。
出了什麼問題?在此先感謝您的答案
XPath的行爲與您的XSD無關。您的XML使用一個名稱空間。你確定你不需要在XPath中使用命名空間前綴? '/ m:Menu','// m:MenuItem'。 – JLRishe
您可以根據行爲描述問題(事情在運行時顯示或不顯示),但XML,XSD和XPath都不指定行爲;他們都是純粹的聲明。如果你說出你正在使用什麼環境以及涉及到什麼XPath解釋器,那麼這可能會有所幫助。 (也就是說,JLRishe幾乎可以肯定地發現問題:你的XPath表達式不匹配,因爲它們沒有引用XML元素使用的命名空間中的元素。) –