从通过stackoverflow搜索我找到了一个解决方案,使用xpath,允许不区分大小写的搜索。我最近对模式进行了一些更改,当我返回到搜索时,使用这种方法时我什么都没找到。这里是我的架构:xpath组合包含/翻译不能正常工作
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="system">
<xs:complexType>
<xs:sequence>
<xs:element ref="pData"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="pData">
<xs:complexType>
<xs:sequence>
<xs:element ref="pNum"/>
<xs:element ref="sData"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="pNum" type="xs:integer"/>
<xs:element name="sData">
<xs:complexType>
<xs:sequence>
<xs:element ref="sNum"/>
<xs:element maxOccurs="unbounded" ref="hData"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="sNum" type="xs:NMTOKEN"/>
<xs:element name="hData">
<xs:complexType>
<xs:sequence>
<xs:element ref="hTitle"/>
<xs:element ref="bData"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="hTitle" type="xs:string"/>
<xs:element name="bData">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="sitData"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="sitData" >
<xs:complexType mixed="true">
<xs:sequence>
<xs:element ref="sitTitle"/>
<xs:element minOccurs="0" ref="sitInfo"/>
<xs:choice>
<xs:element ref="bothColumn"/>
<xs:sequence>
<xs:element ref="leftColumn"/>
<xs:element ref="rightColumn"/>
</xs:sequence>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="sitTitle" type="xs:string"/>
<xs:element name="sitInfo" type="xs:string"/>
<xs:element name="bothColumn">
<xs:complexType>
<xs:sequence>
<xs:element ref="bothTitle"/>
<xs:element ref="bothInfo"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="bothTitle" type="xs:string"/>
<xs:element name="bothInfo" type="xs:string"/>
<xs:element name="leftColumn">
<xs:complexType>
<xs:sequence>
<xs:element ref="leftTitle"/>
<xs:element ref="leftInfo"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="leftTitle" type="xs:string"/>
<xs:element name="leftInfo" type="xs:string"/>
<xs:element name="rightColumn">
<xs:complexType>
<xs:sequence>
<xs:element ref="rightTitle"/>
<xs:element ref="rightInfo"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="rightTitle" type="xs:string"/>
<xs:element name="rightInfo" type="xs:string"/>
</xs:schema>
所以我原来的搜索将是:
return $doc/system/pData/sData/hData/bData/sitData[contains(translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'),$searchTerm)]
当我搜索一个术语说的“系统”,没有什么会拿出当我知道存在数据,所以出现了我的问题在那里,但如果我搜索“系统”所有版本的系统回来。我似乎无法找到其他人与此问题,虽然搜索仍然不区分大小写,所有小写我感到困惑,并且想要了解我的xpath搜索现在发生了什么。我正在利用这些xpath调用的marklogic。这里,将适合该模式的样本XML:
<system>
<pData>
<pNumber>908957303</pNumber>
<sData>
<sNumber>12345</sNumber>
<hData>
<hTitle>What to expect</hTitle>
<bData>
<sitData>
<sitTitle>A whole lot of fun</sitTitle>
<sitInfo> defined fun</sitInfo>
<leftColumn>
<leftTitle>to the left</leftTitle>
<leftInfo> all your clothes </leftInfo>
</leftColumn>
<rightColumn>
<rightTitle>to the right</rightTitle>
<rightInfo> right hand turns </rightInfo>
</rightColumn>
</sitData>
<sitData>
<sitTitle>we out here</sitTitle>
<sitInfo> doing this is painful </sitInfo>
<bothColumn>
<bothTitle>2001 was a good year</bothTitle>
<bothInfo>but it did have some downfalls</bothInfo>
</bothColumn>
</sitData>
</bData>
</hData>
<hData>
<hTitle>What to expect</hTitle>
<bData>
<sitData>
<sitTitle>A whole lot of fun</sitTitle>
<sitInfo> defined fun</sitInfo>
<leftColumn>
<leftTitle>to the left</leftTitle>
<leftInfo> all your clothes </leftInfo>
</leftColumn>
<rightColumn>
<rightTitle>to the right</rightTitle>
<rightInfo> right hand turns </rightInfo>
</rightColumn>
</sitData>
<sitData>
<sitTitle>we out here</sitTitle>
<sitInfo> doing this is painful </sitInfo>
<bothColumn>
<bothTitle>2001 was a good year</bothTitle>
<bothInfo>but it did have some downfalls</bothInfo>
</bothColumn>
</sitData>
</bData>
</hData>
</sData>
</pData>
</system>
发布说明问题的[mcve]。没有看到XML,我们无法验证问题。 – kjhughes
@kjhughes完成。 – Joshhw
无法验证。在'$ searchTerm'中插入''System''就不会选择任何内容,因为该字符串不存在于您的XML中,无论大小写。插入“整个”会找到两个包含该字符串的“sitData”,无论大小写如何,都应如此。 **您的问题无法通过您发布的内容进行验证。** – kjhughes