문제

너무 많은 세부 사항을 사용하지 않고 XML을 메타 데이터로 사용하여 속성에 대한 제약 조건을 설명하기 위해 XML을 사용하려고합니다 (컷 다운 예제이며 XSD는 제안 된 복잡한 모델을 지원하지 않았습니다). 다음 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>
도움이 되었습니까?

해결책

XML 작업이 데이터를 설명하는 데 더 나은 작업을 수행하기 때문에 (XML이해야 할 일), 따라서 읽기가 더 쉽고 덜 장애가 있기 때문에 옵션 #2를 찾을 것입니다. 옵션 #1은 약간 가깝습니다 <name> 그리고 <value> 내가 좋아하는 태그.

다른 팁

유연성을 위해 #1과 함께 갈 것입니다. 이를 통해 다양한 유형의 제약과 사용자 정의 규칙을 추가 할 수 있습니다.

XML을 구문 분석/처리하는 방법과 검증을 원하는 경우에 따라 다릅니다.

유효성 검사 관점에서 (컴파일 타임에서 XSD를 통한 자동 유효성 검사를 고려하는 경우) 옵션 2는 더 나은 선택입니다. 태그의 내용에는 특정 유형 (예 : 일반 표현식)이 있습니다. <value> 올바른 콘텐츠는 태그를 확인할 수 없습니다.

또한 태그를 기준으로 상태를 전환 할 수 있으므로 색소폰 파서를 사용하는 경우 구문 분석 및 처리에 관한 옵션 2와 함께 갈 것입니다.

개인적으로, 나는 첫 번째와 함께 갈 것입니다. 나는 구문 분석에 코드를 작성하고 오류 체크인을하는 것이 더 쉽다고 생각합니다. 또한 내 뇌에 의미 적으로 의미가 있습니다.

즉, 당신은 그것이 '개인적인 선택'이라고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top