Nano Hash - криптовалюты, майнинг, программирование

Как я могу проверить XML-файлы на соответствие нескольким определениям схемы в MarkLogic?

Я работаю в базе данных MarkLogic, которая содержит около 130 000 XML-документов. Эти документы написаны с использованием схемы MODS с дополнительной локальной схемой, используемой в элементе расширения MODS. Я хочу проверить эти документы как на официальном MODS 3.7 xsd, так и на локально написанном файле schematron.sch.

Как я могу проверить все элементы в пространстве имен MODS на соответствие как mods-3.7.xsd, так и schematron.sch? Элементы в нашем локальном пространстве имен также должны быть проверены на соответствие schematron.sch.

Что мне нужно сделать в MarkLogic, чтобы правильно настроить проверку таким образом?

Я пробовал переместить mods-3.7.xsd и schematron.sch в базу данных MarkLogic Schemas, а затем обновить xsi: schemaLocation в XML-документах до xsi:schemaLocation="http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-7.xsd http://www.loc.gov/mods/v3 /Schemas/schematron.sch", а затем протестировать валидацию в консоли запросов MarkLogic с использованием xdmp:document-insert($new-uri, validate strict { $doc } ). Это просто возвращает ошибку: [1.0-ml] XDMP-VALIDATENODECL: (err: XQDY0084) validate strict {$ doc} - Отсутствующее объявление элемента: ожидаемое объявление для узла fn: doc ("/ Apps / theocom-maggie /scripts/MODS-conversion/ia-to-mods.xsl")/mods:mods в неслабом режиме с использованием схемы "".

Помощь!


  • Пространство имен xsi связано со схемой XML W3C (XSD), а xsi: schemaLocation используется для подсказки, какие XSD следует использовать для проверки схемы XML в документе. Насколько мне известно, не существует стандартизированного способа для документа намекать, какую схему Schematron следует использовать для выполнения проверки Schematron в документе. 07.11.2019

Ответы:


1

Имейте в виду, что uri схемы в schemaLocation разрешается в базе данных Schemas, а не в Интернете.

Честно говоря, я думаю, что в MarkLogic проще всего вообще не использовать атрибут xsi: schemaLocation, а скорее явно импортировать схему в xqy (с помощью оператора import schema), чтобы убедиться, что он находит ее правильно.

Кстати, Джошуа прав насчет Схематрона. Оператор validate не выполняет проверку Schematron. Однако MarkLogic обеспечивает поддержку схематронов, которую вы можете применить вручную:

https://docs.marklogic.com/schematron

Схема будет примерно такой. Вы начинаете с загрузки схемы и схемы в базу данных схем. Затем вам нужно скомпилировать файл схемы, используя что-то вроде:

xquery version "1.0-ml";

import module namespace schematron = "http://marklogic.com/xdmp/schematron" 
      at "/MarkLogic/schematron/schematron.xqy";

schematron:put("/schematron.sch")

После этого вы используете схему импорта и проверяете, чтобы выполнить проверку как схемы, так и схемы. Что-то вроде:

import schema namespace mods = "http://www.loc.gov/mods/v3" at "/mods-3-6.xsd";

import module namespace schematron = "http://marklogic.com/xdmp/schematron" 
      at "/MarkLogic/schematron/schematron.xqy";

let $xml := <mods version="3.3" xmlns="http://www.loc.gov/mods/v3">

<titleInfo>
<title>FranUlmer.com -- Home Page</title>
</titleInfo>
<titleInfo type="alternative">
<title>Fran Ulmer, Democratic candidate for Governor, Alaska, 2002</title>
</titleInfo>
<name type="personal">
<namePart>Ulmer, Fran</namePart>
</name>
<genre>Website</genre>
<originInfo>
<dateCaptured point="start" encoding="iso8601">20020702 </dateCaptured>
<dateCaptured point="end" encoding="iso8601"> 20021203</dateCaptured>
</originInfo>
<language>
<languageTerm authority="iso639-2b">eng</languageTerm>
</language>
<physicalDescription>
<internetMediaType>text/html</internetMediaType>
<internetMediaType>image/jpg</internetMediaType>
</physicalDescription>
<abstract>Website promoting the candidacy of Fran Ulmer, Democratic candidate for Governor, Alaska, 2002. Includes candidate biography, issue position statements, campaign contact information, privacy policy and campaign news press releases. Site features enable visitors to sign up for campaign email list, volunteer, make campaign contributions and follow links to other internet locations. </abstract>
<subject>
<topic>Elections</topic>
<geographic>Alaska</geographic>
</subject>
<subject>
<topic>Governors</topic>
<geographic>Alaska</geographic>
<topic>Election</topic>
</subject>
<subject>
<topic>Democratic Party (AK)</topic>
</subject>
<relatedItem type="host">
<titleInfo>
<title>Election 2002 Web Archive</title>
</titleInfo>
<location>
<url>http://www.loc.gov/minerva/collect/elec2002/</url>
</location>
</relatedItem>
<location>
<url displayLabel="Active site (if available)">http://www.franulmer.com/</url>
</location>
<location>
<url displayLabel="Archived site">http://wayback-cgi1.alexa.com/e2002/*/http://www.franulmer.com/</url>
</location>
</mods>
return
  schematron:validate(
    validate strict { $xml},
    schematron:get("/schematron.sch")
  )

HTH!

08.11.2019
  • Итак, как я могу проверить документы, используя файл MODS xsd в дополнение к файлу схемы? 08.11.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..