Doppelpunktproblem bei der Verwendung von XSLT zum Erstellen von Vue.js-Komponenten
P粉924915787
P粉924915787 2024-03-27 22:32:19
0
1
494

Ich arbeite an der Konvertierung von XML- in Vue.js-Vorlagen. Als ich jedoch versuchte, die v-tooltip-Komponente von Vuetify zu erstellen, stieß ich auf Probleme.

Dieser XSLT-Code:

<xsl:element name="v-tooltip">
    <xsl:attribute name="bottom"/>
    <xsl:element name="template">
        <xsl:attribute name="v-slot:activator">{ on , attrs}</xsl:attribute>
        <xsl:element name="v-icon">
            <xsl:attribute name="v-bind">attrs</xsl:attribute>
            <xsl:attribute name="v-on">on</xsl:attribute>
            mdi-home
        </xsl:element>
    </xsl:element>
    <xsl:element name="span">ToolTip</xsl:element>
</xsl:element>

Geschätzte Generation:

<v-tooltip bottom>
  <template v-slot:activator="{ on, attrs }">
    <v-icon
      v-bind="attrs"
      v-on="on"
    >
      mdi-home
    </v-icon>
  </template>
  <span>Tooltip</span>
</v-tooltip>

aber es verursacht einen Fehler aufgrund des Doppelpunkts in <xsl:attribute name="v-slot:activator"> Wenn ich die Doppelpunkte wie <xsl:attribute name="v-slotactivator"> entferne, bestätige ich, dass die XSLT-Transformation stattfindet, sodass die einzige Fehlerursache definitiv der Doppelpunkt ist.

In mehreren anderen Artikeln wurde darauf hingewiesen, dass etwas wie <xsl:attribute name="v-slot&colon;activator"> 一样,使用变体插入 <xsl:text>v-slot:activator<xsl:text><xs l:文本禁用输出转义=“是” “>v-slot:activator<xsl:text>,或 name="{concat('v-slot',':','activator')}" verwendet wurde, aber keiner davon funktionierte.

Gibt es eine Lösung für dieses Problem? Oder schaffst du es einfach nicht?

Danke,

P粉924915787
P粉924915787

Antworte allen(1)
P粉030479054

实际上,我有点自行解决,尽管这更像是一种解决方法。

我在 JS 中使用 XSLTProcessor 生成 Vue.js 代码。通过使用这个类,我可以获得 DOM 作为转换结果。我设法在 XSLT 转换后操作 DOM。

这是我所做的:

首先,在 XSLT 代码中,我向 template 元素添加了一个值为 vslot(例如)的 id 属性。简而言之,我将 <xsl:attribute name="v-slot:activator">{ on , attrs}</xsl:attribute> 替换为 <xsl:attribute name="id">vslot</xsl:attribute >

其次,在JS代码中,我使用 setAttribute() 方法和 XSLT 中设置的 id 值更改了属性和值(以及 removeAttribute() 方法以及删除 id 属性),如下所示:

var xsltProcessor = new XSLTProcessor()
xsltProcessor.importStylesheet(xsl)
var doc = xsltProcessor.transformToDocument(xml)
doc.getElementById('vslot').setAttribute('v-slot:activator','{ on, attrs }')
doc.getElementById('vslot').removeAttribute('id')
var result = doc.documentElement.outerHTML

而且,瞧! v-icon 出现在浏览器上,并且 v-tooltip 正在工作!

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage