2013-10-08 3 views
0

XML로 쿼리를 설명해야합니다. 쿼리 절은 값과 비교 유형으로 구성됩니다. 예를 들어, 평등, 범위에 포함 및 유사성의 세 가지 비교 유형을 사용합니다. 여기서 정수는 유사성의 정도를 정의합니다.XML 노드의 콘텐트가 노드 속성 값에 의존하는 것은 나쁜 습관입니까?

<Clause type="equal">42</Clause> 
<Clause type="inside" lowerlimit="41" upperlimit="43"/> 
<Clause type="similar" degree="2">Abcd</Clause> 

아니면이 같은 상황에 특정 노드의 값을 설명 할 수 있습니다 :이처럼 설명 할 수

<Clause type="equal"> 
    <Value>42</Value> 
</Clause> 

<Clause type="inside"> 
    <RangeLimit lowerlimit="41" upperlimit="43"/> 
</Clause> 

<Clause type="similar"> 
    <Similarity degree="2">Abcd</Similarity> 
</Clause> 

내가 첫 번째 예는 더 인간적으로 읽을 수 발견하고 파서 코드가 더 간결해질 것입니다. 또한 값 (예 : 같음)을 취하는 9 가지 유형의 절이 있고 추가 매개 변수가있는 두 개의 절만 있습니다. 따라서 두 번째 선택 항목을 선택하면 결과 XML이 심각하게 커지고 문제가 해결 될 때 크기가 중요 해집니다.

반면에 저는 속성 간의 관계가 마음에 들지 않습니다. 두 번째 예제는 더 서술적이고 균일합니다.

첫 번째 선택으로 갈 때 어떤 영향이 있습니까?

답변

1

스키마에 특성을 사용하는 요소를 설명하기가 어렵습니다.

제공 한 두 가지 중에서 선택해야하는 경우 프로그래밍 관점에서 두 번째 프로그래밍이 더 쉽습니다. 두 가지 중 하나에, 당신은 쉽게 두 <Clause> 요소의 형태의 혼합에 대해 제한 할 수 없을 것입니다 :

<Equal>42</Equal> 
<Inside lowerLimit="42" upperLimit="43"/> 
<Similar degree="2">Abcd</Similar> 

<Clause> 
    <Similar degree="2">Abcd</Similar> 
</Clause> 
: 여기

<Clause type="similar"> 
    <RangeLimit lowerLimit="42" upperLimit="43"/> 
</Clause> 

것은 몇 가지 대안

관련 문제