Создайте xmlns:xsi пространство имен и атрибут

Пожалуйста, смотрите проблему здесь

В основном, удалите папку tns_modules из platforms/android/app/build/intermediates/merged_assets/debug/mergeDebugAssets/out/app/tns_modules/

Это, очевидно, вызвано командой npm link, которую я где-то использовал .

10
задан Mathias Müller 26 March 2014 в 10:18
поделиться

3 ответа

Попробуйте следующее вместо этого:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

    <xsl:output method="xml" indent="yes"/>

    <xsl:template match="@* | node()">
        <xsl:apply-templates select="xml"></xsl:apply-templates>
    </xsl:template>

    <xsl:template match="xml">
        <xsl:element name="exercises">
            <xsl:attribute name="xsi:noNamespaceSchemaLocation">mySchema.xsd</xsl:attribute>
            some value
        </xsl:element>
    </xsl:template>
</xsl:stylesheet>

Ключевое беспокойство состоит в том, чтобы объявить xsi пространство имен в объявлении.

Я просто составил шаблонное соответствие на только для тестирования.

8
ответ дан 4 December 2019 в 00:27
поделиться

Вот то, как это может быть сделано:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 exclude-result-prefixes="xsi">
    <xsl:output omit-xml-declaration="yes"/>
    <!--                                   -->
    <xsl:template match="/">
      <exercises  xsi:noNamespaceSchemaLocation="mySchema.xsd"/>
    </xsl:template>
</xsl:stylesheet>

Когда это преобразование применяется на любой исходный XML-документ (не используемый), к требуемому результату приводят:

<exercises xsi:noNamespaceSchemaLocation="mySchema.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />

Не необходимо использовать <xsl:attribute> в Вашем случае, однако при необходимости, это может использоваться без любой проблемы:

    <xsl:attribute name="xsi:noNamespaceSchemaLocation">
      <xsl:value-of select="'mySchema.xsd'"/>
    </xsl:attribute>

Действительно обратите внимание, что это - хорошая практика для простого определения необходимых пространств имен в <xsl:stylesheet> элемент так, чтобы они могли с готовностью быть (ре), используемое везде, они необходимы. Это особенно полезно, если данное пространство имен будет необходимо больше чем на одном сгенерированном элементе или атрибуте.

В этом случае также хорошо указать все такие префиксы в значении exclude-result-prefixes припишите так, чтобы пространства имен не были автоматически распространены на всех литеральных элементах результата.

3
ответ дан 4 December 2019 в 00:27
поделиться

Вы могли просто использовать:-

<exercises xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="mySchema.xsd">

Непосредственно в Вашем XSL, который работал бы, Вам только действительно нужен xsl:element, если не может трудно кодировать имя тега. Так же с атрибутами можно добавить их непосредственно, если Вы не должны делать условное выражение.

1
ответ дан 4 December 2019 в 00:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: