2010-09-21 3 views
2

Я только что начал переключать свой старый DTD на XSD, когда узнал об этом, и мне интересно, как я могу применить XSD к моим XML-файлам? Я видел валидатор W3C там, но я хотел бы, чтобы был способ сделать программу не запущенной в браузере, если была обнаружена ошибка XSD. Это возможно?Как вы можете применять XSD?

+4

какой язык вы используете? – code4life

+2

Снова, на каком языке написана «программа»? – CaffGeek

+0

Нет, вы не редактировали. После редактирования вы должны нажать «Сохранить»;) – unbeli

ответ

2

Обеспечение выполнения правил XSD не может быть сделано непосредственно в XML, так как это формат текстовый файл и не имеет внутренней логики или способа проверить себя на достоверность.

Для обеспечения соблюдения правил необходимо использовать проверочный синтаксический анализатор - этот анализатор может загружать XML и XSD и проверять XML на предмет соответствия действительности XSD. Это справедливо и для DTD.

+0

Итак, если это так ... Есть ли причина ссылаться на файл .xsd из XML-файла? – Metropolis

+0

@Metropolis - Это удобно, как ссылка, если ничего другого. Вы можете использовать синтаксический анализатор для извлечения ссылки XSD, чтобы найти/получить XSD и подтвердить его. – Oded

4

Да, это возможно с использованием проверки парсеров XML, которые доступны для большинства языков общего назначения.

ОК, так что это PHP, то непосредственно из первого Google попал на «проверки XML PHP»:

<?php 

$xml = new DOMDocument(); 
$xml->load('./lures.xml'); 

if (!$xml->schemaValidate('./lures.xsd')) { 
    echo "invalid<p/>"; 
} 
else { 
    echo "validated<p/>"; 
} 

?> 
+0

Любые предложения по этому поводу? – Metropolis

+2

уверен, как только вы сообщите нам, какой язык/среда вы разрабатываете для – unbeli

+0

Мне не сильно понравилось использование парсера .... Я уже знал, что это можно сделать. Я действительно задавался вопросом, может ли это быть сделано напрямую, когда страница загружается в браузере. Но большое спасибо за пример :) +1. Я также не очень оценил «первый хит Google», как будто я его еще не искал. Меня бы здесь не было, если бы я этого не сделал. – Metropolis

Смежные вопросы