Как скопировать содержимое элемента XML в другой файл XML с помощью xslt? - PullRequest
0 голосов
/ 11 июня 2018

Мне нужно скопировать некоторые данные из одного XML-файла в другой XML-файл.Я перепробовал многие вещи безуспешно.

1.xml

<head><meta name="charset" content="utf-8"/></head>

2.xml файл:

<dc:identifier id="uuid">123456789</dc:identifier>

выходной файл Нравится:

  <head>
      <meta name="dtb:uid" content="123456789"/>
      <meta name="dtb:depth" content="1"/>
      <meta name="dtb:totalPageCount" content="0"/>
      <meta name="dtb:maxPageNumber" content="0"/>
   </head>

XSLT-файл:

    <xsl:template match="html:head">
<head>
<meta name="dtb:uid" content="{html:meta[@name='dc:identifier']/@content}"/>
<meta name="dtb:depth" content="{max(//html:li/count(ancestor::html:li))+1}"/>
<xsl:variable name="totalPageCount" select="count(//html:nav[@epub:type='page-list']/html:ol/html:li)"/>
<meta name="dtb:totalPageCount" content="{$totalPageCount}"/>
<xsl:variable name="maxPageNumber" select="number((//html:nav[@epub:type='page-list']/html:ol/html:li)[last()])"/>
<meta name="dtb:maxPageNumber" content="{if (string($maxPageNumber)='NaN') then $totalPageCount else $maxPageNumber}"/>
<xsl:apply-templates select="html:meta[not(@name='dc:identifier')]"/>
</head>
</xsl:template>

Кто-нибудь знает, как это сделать?

1 Ответ

0 голосов
/ 11 июня 2018

Предполагая, что общий код XSLT применяется к 3.xml (который не является общим), вы можете получить значение dc:identifier из 2.xml в код XSLT с помощью функции document().

Измените приведенный ниже код XSLT

<meta name="dtb:uid" content="{html:meta[@name='dc:identifier']/@content}"/>

на

<meta name="dtb:uid" content="{document('2.xml')/dc:identifier}"/>

Убедитесь, что все пространства имен правильно сопоставлены в XSLT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...