简单XSLT问题:设置内部HTML节点属性值,例如
-
20-09-2019
- |
-
-
20-09-2019 - |
题
我很难找到以下问题的答案,这似乎很普遍,所以我必须缺少一些基本的东西。你能帮我吗?
鉴于人为的XML模式,样品XML输入和以下样品XSLT用于将XML转换为HTML。如何在标签中设置属性?例如 <div id=HouseNumber>
,<input type="checkbox" id=Zipcode>
, , ETC?
笔记: 出于目的,在Housenumber和Zipcode周围缺乏报价。我试图将这些属性的值从XML输入中放入ID =“”,for =“”,name =“”,等。
感谢您的时间,并输入问题的第一个版本。
BN
样品XML模式
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Location">
<xs:complexType>
<xs:attribute name="State" type="xs:string" use="required" />
<xs:attribute name="County" type="xs:string" use="required" />
<xs:attribute name="City" type="xs:string" use="required" />
<xs:attribute name="Zipcode" type="xs:nonNegativeInteger" use="required" />
<xs:attribute name="HouseNumber" type="xs:nonNegativeInteger" use="required" />
</xs:complexType>
</xs:element>
</xs:schema>
样本XML输入:
<Location>
<State>California</State>
<County>Los Angeles County</County>
<City>Los Angeles</City>
<Zipcode>90210</Zipcode>
<HouseNumber>123</HouseNumber>
</Location>
样本XSLT:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/>
<xsl:template match="/">
<xsl:for-each select="Location">
<!--Inner HTML example, div has no id-->
<div class="houseStyle">
<ul>
<li><xsl:value-of select="Location/State"/></li>
<li><xsl:value-of select="Location/County"/></li>
<li><xsl:value-of select="Location/City"/></li>
<li><xsl:value-of select="Location/Zipcode"/></li>
</ul>
</div>
<!--Inner HTML example again, but how do I
set the div id to HouseNumber?-->
<div class="houseStyle" id=HouseNumber>
<ul>
<li><xsl:value-of select="Location/State"/></li>
<li><xsl:value-of select="Location/County"/></li>
<li><xsl:value-of select="Location/City"/></li>
<li><xsl:value-of select="Location/Zipcode"/></li>
</ul>
</div>
</xsl:for-each>
</xsl:stylesheet>
所需的HTML输出,其中DIV标签具有房屋编号的ID:
<div class="houseStyle" id="123">
<ul>
<li>California</li>
<li>Los Angeles County</li>
<li>Los Angeles</li>
<li>90210</li>
</ul>
</div>
解决方案
目前尚不清楚您在这里想要什么。您是说要将您的属性设置为某些XPath表达式的结果(例如 Delta
)?如果是这样,这应该可以解决:
<div class="stylishClass" id="{Delta}">
或者您可以使用 <xsl:element>
和 <xsl:attribute>
, ,正如其他答案所描述的,尽管必须生成元素/属性名称本身时的典型用例。
其他提示
尝试:
<xsl:element name="div">
<xsl:attribute name="class">stylishClass</xsl:attribute>
<xsl:attribute name="id"><xsl:value-of select="Delta"/></xsl:attribute>
</xsl:element>
锚定标签的示例:
<xsl:element name="a">
<xsl:attribute name="href">http://example.com</xsl:attribute>
<xsl:text>My Link Text</xsl:text>
</xsl:element>
下面的代码呢?
<xsl:element name="div">
<xsl:attribute name="class">stylishClass</xsl:attribute>
<xsl:attribute name="id"><xsl:value-of select="Delta"/></xsl:attribute>
</xsl:element>
Hth
不隶属于 StackOverflow