문제
너무 많은 세부 사항을 사용하지 않고 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와 함께 갈 것입니다.
개인적으로, 나는 첫 번째와 함께 갈 것입니다. 나는 구문 분석에 코드를 작성하고 오류 체크인을하는 것이 더 쉽다고 생각합니다. 또한 내 뇌에 의미 적으로 의미가 있습니다.
즉, 당신은 그것이 '개인적인 선택'이라고 생각합니다.