저는 파이썬에서 XML을 구문 분석하고 있습니다. XML 유효성을 검사하는 XSD 스키마가 있습니다. XSD에 정의 된대로 XML의 특정 노드 유형을 가져올 수 있습니까?XSD에 정의 된대로 XML 노드의 유형을 가져올 수 있습니까?
예를 들어, 내 XML (작은 부분) (다시 한번의 작은 부분) 내 XSD가
<deviceDescription>
<wakeupNote>
<lang xml:lang="ru">Русский</lang>
<lang xml:lang="en">English</lang>
</wakeupNote>
</deviceDescription>
입니다 :
<xsd:element name="deviceDescription" type="zwv:deviceDescription" minOccurs="0"/>
<xsd:complexType name="deviceDescription">
<xsd:sequence>
<xsd:element name="wakeupNote" type="zwv:description" minOccurs="0">
<xsd:unique name="langDescrUnique">
<xsd:selector xpath="zwv:lang"/>
<xsd:field xpath="@xml:lang"/>
</xsd:unique>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="description">
<xsd:sequence>
<xsd:element name="lang" maxOccurs="unbounded">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute ref="xml:lang" use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
구문 분석하는 동안 나는 알고 싶어요 내 태그 웨이크 업 노트은 XSD에서 complexType zwv : 설명으로 정의됩니다. 이 작업을 수행하는 방법 (파이썬에서)?
무엇이 필요합니까? 이 XML이 많이 있고 그 중 모두에 영어가 채워진 필드가 있는지 확인하고 싶습니다. <lang xml:lang="en"></lang>
이 비어 있는지 쉽게 확인할 수 있지만이 태그를 전혀 지정하지 않아도됩니다.
따라서 언어 설명이있는 모든 태그를 가져 와서 <lang>
태그가 있는지 확인하고 ko에 대해 비어 있지 않은 콘텐츠가 있는지 확인하는 것이 좋습니다. 유효성 검사를하는 동안 내 XML이 XSD에 대해 검사되기 때문에
UPD
는 검증 엔진은 모든 노드의 유형을 알고있다. 7 개월 전에도 비슷한 질문이 있었는데 아직 답이 없습니다. 그것들은 관련되어있다. Validating and filling default values in XML based on XSD in Python
저는 XSD에 정의 된 모든 XML 노드를'zwv : description'로 찾고 싶습니다. XSD의 모든 정의가 아니라. 예를 들어, 내 XSD에서는'wakeupNote'를'zwv : description'으로'내부 deviceDescription'을 정의하고'zwv : shortdescription'으로 다른 태그 내부에 하나를 정의 할 수 있습니다. 따라서 필자의 XML에는 두 가지 유형의 'wakeupNote'가있다. 그리고 나는'zwv : description' 타입을 가진 사람들 만 선택해야합니다. 그것을하는 방법? – PoltoS
수정 사항이 귀하의 필요를 충족시키지 않는 경우 의견을 추가하십시오. 질문과 답변을 명확히 할 기회를주지 말고 투표를하지 마십시오. –
이 문제에 대해 더 많이 생각할수록 좋은 추천을하기 위해 유스 케이스를 이해해야합니다. 어떻게 XML을 파싱합니까? 스키마 변경 빈도 XSD는 귀하 또는 상대방입니까? 상대방 인 경우 추가 검증을 수행하는 이유는 무엇입니까? –