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