2009-07-01 3 views
2

너무 자세하게 설명하지 않고 우리는 XML을 메타 데이터로 사용하여 속성에 대한 제약 조건을 설명하고자합니다 (이것은 축소 된 예이며 XSD는 제안 된 복잡한 모델을 지원하지 않았습니다). 두 가지 옵션이 고려됩니다. 다음 XML 구조는 더 합리적인가?어떤 XML 구조가 더 합리적입니까?

옵션 1)

<?xml version="1.0" encoding="us-ascii"?> 
<Properties xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <Property type="string"> 
     <name>quanitity</name> 
     <contraints> 
     <contraint type="isRequired"> 
      <value>true</value> 
     </contraint> 
     <contraint type="regex"> 
      <value>^[0-9]$</value> 
     </contraint> 
     <contraint type="regex"> 
      <value>^[a-zA-Z]$</value> 
     </contraint> 
     </contraints> 
    </Property> 
</Properties> 

옵션 2) 유연성을

<?xml version="1.0" encoding="us-ascii"?> 
<Properties xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <Property type="string"> 
     <name>quantity</name> 
     <IsRequired>true</IsRequired> 
     <Regex>^[0-9]$</Regex> 
     <Regex>^[a-zA-Z]$</Regex> 
    </Property> 
</Properties> 

답변

1

XML 작업이 데이터를 설명하는 데 더 나은 작업을 수행하므로 (아마도 XML이해야 할 모든 일이 다름) XML 작업이 더 쉽고 덜 상세하게 표시되므로 옵션 # 2로 갈 것입니다. 옵션 # 1은 내가 좋아하는 태그 <name><value>에 가깝습니다.

1

, 나는 1 번 갈 것입니다. 이렇게하면 다양한 유형의 제약 조건 및 사용자 지정 규칙을 추가 할 수 있습니다.

+0

"값"태그가 필요하지 않습니다. 하지만 포함하는 요소를 선언하면 형식이 XML의 더 나은 "OO"느낌을 허용합니다. –

+0

새 자식 요소를 추가하기 위해 XML 레이아웃을 재정의하지 않고 나중에 더 추가 할 수 있습니다. –

+0

실제로 이것을 단점으로 간주합니다. 즉, XML 유효성 검사를 통과하지만 파서 코드가 폭발하는 새 제한 조건 값을 쉽게 전달할 수 있습니다. – Adamski

0

개인적으로 첫 번째 질문과 관련해서는 코드를 작성하고 오류를 검사하는 것이 더 쉬울 것이라고 생각합니다. 내 뇌에 의미 적으로 의미가 있습니다.

즉, 나는 그것이 '개인적인 선택'이라고 생각할 것입니다, 어느 쪽이든 괜찮습니다.

1

XML을 구문 분석/처리하려는 방법과 XML의 유효성을 검사 할 수 있는지에 따라 다릅니다.

유효성 검사 시점에서 (컴파일 타임에 XSD를 통한 자동 유효성 검사를 고려하는 경우) 태그의 내용이 특정 유형 (예 : 정규 표현식)을 갖기 때문에 옵션 2가 더 좋습니다. <value> 태그는 올바른 내용을 확인할 수 없습니다.

또한 태그를 기반으로 상태를 전환 할 수 있으므로 SAX 파서를 사용하는 경우 구문 분석 및 처리와 관련하여 옵션 2를 사용할 것입니다.

+0

물론 확인할 수 있습니다. 그것을 검증하기위한 규칙을 찾아내는 데 조금 더 노력해야합니다. –

+1

옵션 1의 경우 의 내용이 부울, 정규식 또는 XML 스키마 만 기반으로하는 다른 내용인지 알아낼 방법이 없으므로 옵션 1의 경우 자동으로 XSD를 사용하여 유효성을 검사 할 수 없습니다. –

관련 문제