문제
학습 목적으로 개인 주최자를하고 있으며 XML과 함께 일한 적이 없으므로 솔루션이 최고인지 확실하지 않습니다. 다음은 다음과 같이 제공 한 XML 파일의 기본 구조입니다.
<calendar>
<year value="2008">
<month value="october">
<day value="16">
<activity name="mike's birthday" time="21:00" address="mike's apartment" urgency="10">
activity description.
</activity>
</day>
</month>
</year>
</calendar>
긴급 속성은 1에서 10의 척도에 있어야합니다.
Google에서 빠른 검색을했는데 좋은 예를 찾을 수 없었습니다. 어쩌면 그것은 최선의 해결책이 아니며, 그 적절한 지 알고 싶습니다. 관련성이있는 경우 PHP에서 응용 프로그램을하고 있습니다.
해결책
당신의 길은 나에게 아주 적합합니다. 그러나 나는 속성에 어린이 태그를 선호하므로 내 방식은 다음과 같습니다.
<activity>
<name>Mike's Birthday</name>
<time>2100</time>
<address>Mike's Place</address>
<urgency>10</urgency>
<description>activity description</description>
</activity>
그러나 내가 말했듯이, 당신의 길은 괜찮습니다.
그래도 빠른 질문 - 왜 데이터베이스가 아닌가?
다른 팁
이 순진하게 도달했을 수도 있지만 XML 디자인의 주요 기능은 날짜별로 검색에 최적화된다는 것입니다. XML 문서가 크고 날짜별로 많은 검색을 수행하는 경우 (개인 주최자에서 가장 일반적인 사용 사례라고 생각합니다) 이것은 좋은 것입니다.
이 xpath 패턴 실행 :
/calendar/year[@value='2008']/month[@value='10']/day[@value='7']/activity
Kev의 더 간단한 평평한 조직에서 사용하는 패턴을 사용하는 것보다 더 적은 노드를 검사합니다.
/calendar/activity[@year='2008' and @month='10' and @day='7']
기본적으로 문서의 모든 노드를 살펴 봐야합니다.
그건 그렇고, 나는 month
그리고 day
속성은 숫자입니다. 이것은 어느 시점 에서이 데이터를 분류하기를 원하기 때문에 중요합니다. 문서에서 정렬 순서를 유지하지 않는 한 (인정할 수있는 논쟁을 할 수 있음), 당신은 당신입니다. LL은 해당 속성을 쉽게 정렬 할 수있는 형태로 원합니다.
또한 해당 속성에 숫자 데이터를 저장하는 방법에 일관성이 있어야합니다. (회의에서 똑똑하게 들리려면 데이터 유형의 표준 표현을 확립하고 있다고 말할 수 있습니다.) 예를 들어 다른 XPATH 패턴 중 어느 것도 안정적으로 작동하지 않을 것입니다. @day='7'
일치하지 않습니다 day
속성으로 설정되었습니다 "07"
. (당신은 속성을 xpath의 숫자로 변환하여 number()
기능이지만 처음에는 문제를 피하는 것이 좋습니다.)
해당 계층을 평평하게 할 수 있습니다.
<calendar>
<activity
id="123456"
name="mike's birthday"
year="2008"
month="10"
day="16"
time="21:00"
address="mike's apartment"
urgency="10">
activity description.
</activity>
</calendar>
또는..
<calendar>
<activity id="12345">
<name>mike's birthday</name>
<year>2008</year>
<month>10<month>
<day>16</day>
<time>21:00</time>
<urgency>10</urgency>
<address>mike's apartment<address>
<description>activity description.</description>
</activity>
</calendar>
xpath 쿼리를하는 것은 인생을 조금 덜 고통스럽게 만들 것입니다. 또한 ID 속성을 추가하여 활동을 고유하게 식별 할 수 있습니다.
나는 당신의 구조가 당신이하는 일에 좋을 것이라고 생각합니다.
이 부분을 XML에 대해 배우기 위해이 부분을 사용하려는 경우 각각의 컬렉션 작업을 수행 할 수 있도록 속성과 요소의 혼합을 사용하는 것을 고려할 수 있습니다. XML에 더 편한 후에는 어떤 속성이 속성이되고 어떤 속성이 요소가되는지 결정하는 데 사용할 규칙을 정의하기 시작할 것입니다.
올바른 코드를 사용하면 XML 파일과 데이터베이스 테이블간에 정보를 앞뒤로 이동할 수 있습니다. 학습을 시작할 수도 있습니다 XSL 원래 XML 파일을 변경하지 않고 주변의 이동을 연습 할 수 있도록하십시오 (또는 데이터가 테이블에 있으면 원본 XML 파일도 없음).