Arhn - архитектура программирования

xpath не может работать с пространствами имен в исходном xml

у меня есть простой xpath, который из-за наличия пространства имен в исходном xml не работает. и инструмент, в котором я пишу xpath, не имеет возможности писать код на основных языках и включая библиотеки. У меня есть возможность, кроме написания XSLT, но я не уверен, как это сделать, может ли кто-нибудь помочь в этом?

<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xml:base="https://collaboration.merck.com/sites/amseimcts/_api/">
   <id>d38a1da2-02e9-467e-b59b-e520c8607914</id>
   <title />
   <updated>2019-05-08T10:54:04Z</updated>
   <entry>
      <id>https://collaboration.xxx.com/sites/amseimcts/_api/Web/GetFileByServerRelativePath(decodedurl='/sites/amseimcts/Shared Documents/SAP Config/OBA1.csv')</id>
      <category term="SP.File" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
      <link rel="edit" href="Web/GetFileByServerRelativePath(decodedurl='/sites/amseimcts/Shared%20Documents/SAP%20Config/OBA1.csv')" />
      <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Author" type="application/atom+xml;type=entry" title="Author" href="Web/GetFileByServerRelativePath(decodedurl='/sites/amseimcts/Shared%20Documents/SAP%20Config/OBA1.csv')/Author" />
      <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/CheckedOutByUser" type="application/atom+xml;type=entry" title="CheckedOutByUser" href="Web/GetFileByServerRelativePath(decodedurl='/sites/amseimcts/Shared%20Documents/SAP%20Config/OBA1.csv')/CheckedOutByUser" />
      <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/EffectiveInformationRightsManagementSettings" type="application/atom+xml;type=entry" title="EffectiveInformationRightsManagementSettings" href="Web/GetFileByServerRelativePath(decodedurl='/sites/amseimcts/Shared%20Documents/SAP%20Config/OBA1.csv')/EffectiveInformationRightsManagementSettings" />
      <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/InformationRightsManagementSettings" type="application/atom+xml;type=entry" title="InformationRightsManagementSettings" href="Web/GetFileByServerRelativePath(decodedurl='/sites/amseimcts/Shared%20Documents/SAP%20Config/OBA1.csv')/InformationRightsManagementSettings" />
      <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/ListItemAllFields" type="application/atom+xml;type=entry" title="ListItemAllFields" href="Web/GetFileByServerRelativePath(decodedurl='/sites/amseimcts/Shared%20Documents/SAP%20Config/OBA1.csv')/ListItemAllFields" />
      <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/LockedByUser" type="application/atom+xml;type=entry" title="LockedByUser" href="Web/GetFileByServerRelativePath(decodedurl='/sites/amseimcts/Shared%20Documents/SAP%20Config/OBA1.csv')/LockedByUser" />
      <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/ModifiedBy" type="application/atom+xml;type=entry" title="ModifiedBy" href="Web/GetFileByServerRelativePath(decodedurl='/sites/amseimcts/Shared%20Documents/SAP%20Config/OBA1.csv')/ModifiedBy" />
      <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Properties" type="application/atom+xml;type=entry" title="Properties" href="Web/GetFileByServerRelativePath(decodedurl='/sites/amseimcts/Shared%20Documents/SAP%20Config/OBA1.csv')/Properties" />
      <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/VersionEvents" type="application/atom+xml;type=feed" title="VersionEvents" href="Web/GetFileByServerRelativePath(decodedurl='/sites/amseimcts/Shared%20Documents/SAP%20Config/OBA1.csv')/VersionEvents" />
      <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Versions" type="application/atom+xml;type=feed" title="Versions" href="Web/GetFileByServerRelativePath(decodedurl='/sites/amseimcts/Shared%20Documents/SAP%20Config/OBA1.csv')/Versions" />
      <title />
      <updated>2019-05-08T10:54:04Z</updated>
      <author>
         <name />
      </author>
      <content type="application/xml">
         <m:properties>
            <d:CheckInComment />
            <d:CheckOutType m:type="Edm.Int32">2</d:CheckOutType>
            <d:ContentTag>{87637609-7D7C-466B-A60B-5BD7A028712C},6,6</d:ContentTag>
            <d:CustomizedPageStatus m:type="Edm.Int32">0</d:CustomizedPageStatus>
            <d:ETag>"{87637609-7D7C-466B-A60B-5BD7A028712C},6"</d:ETag>
            <d:Exists m:type="Edm.Boolean">true</d:Exists>
            <d:IrmEnabled m:type="Edm.Boolean">false</d:IrmEnabled>
            <d:Length m:type="Edm.Int64">447</d:Length>
            <d:Level m:type="Edm.Byte">1</d:Level>
            <d:LinkingUri>https://collaboration.merck.com/sites/amseimcts/Shared%20Documents/SAP%20Config/OBA1.csv?d=w876376097d7c466ba60b5bd7a028712c</d:LinkingUri>
            <d:LinkingUrl>https://collaboration.merck.com/sites/amseimcts/Shared Documents/SAP Config/OBA1.csv?d=w876376097d7c466ba60b5bd7a028712c</d:LinkingUrl>
            <d:MajorVersion m:type="Edm.Int32">4</d:MajorVersion>
            <d:MinorVersion m:type="Edm.Int32">0</d:MinorVersion>
            <d:Name>OBA1.csv</d:Name>
            <d:ServerRelativeUrl>/sites/amseimcts/Shared Documents/SAP Config/OBA1.csv</d:ServerRelativeUrl>
            <d:TimeCreated m:type="Edm.DateTime">2019-05-05T10:50:02Z</d:TimeCreated>
            <d:TimeLastModified m:type="Edm.DateTime">2019-05-07T12:08:57Z</d:TimeLastModified>
            <d:Title m:null="true" />
            <d:UIVersion m:type="Edm.Int32">2048</d:UIVersion>
            <d:UIVersionLabel>4.0</d:UIVersionLabel>
            <d:UniqueId m:type="Edm.Guid">87637609-7d7c-466b-a60b-5bd7a028712c</d:UniqueId>
         </m:properties>
      </content>
   </entry>
</feed>

Требование: мне нужно извлечь OBA1.csv из данного xml. мой xpath ниже не работает. поэтому мне нужно придумать XSLT сейчас, чтобы выполнить задачу.

feed/entry/content/m:properties/d:Name/text()
09.05.2019

  • Вам нужно использовать префиксы после привязки их к пространствам имен, используемым в вашем XML. 09.05.2019

Ответы:


1

Обновите свой xpath, как показано ниже:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
xmlns:atom="http://www.w3.org/2005/Atom" 
xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"
version="1.0">

<xsl:output method="xml" indent="yes" />
<xsl:strip-space elements="*" />

<xsl:template match="/">
    <xsl:value-of select="atom:feed/atom:entry/atom:content/m:properties/d:Name" />
</xsl:template>

</xsl:stylesheet>

См. демо здесь: https://xsltfiddle.liberty-development.net/94rmq6z

09.05.2019
  • Вы должны задать его по вашему вопросу. Так что человек, который проголосовал против, может ответить там. Я считаю, что ответ как общий ответ. Вы тоже можете это использовать. 09.05.2019
  • в любом случае ваш ответ работает нормально, спасибо. :) теперь кое-что понимаю. но все же есть сомнения. вы просите меня обновить xpath. но то, что вы дали, является xslt, так что это можно сделать только с помощью обряда xslt? 10.05.2019
  • Вы не упомянули, какой инструмент вы используете для своего XPATH. Также вы упомянули, что у вас есть возможность написать xslt. не так ли? 10.05.2019
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..