gpt4 book ai didi

html - 具有属性和值以及 CSS 的 XSL TR 和 TD 元素

转载 作者:太空宇宙 更新时间:2023-11-04 10:41:45 24 4
gpt4 key购买 nike

最新更新 我已经包含了一个示例 XSL 和当前输出:)

示例 XML

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"
xmlns="http://www.w3.org/1999/xhtml"
exclude-result-prefixes="xsl">
>
<xsl:output method="xml" encoding="UTF-8" indent="yes" />
<xsl:template match="/Report">
<xsl:text disable-output-escaping='yes'>&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;
</xsl:text>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>My Report</title>
</head>
<body>
<xsl:element name="table" namespace="">
<xsl:element name="tr" namespace="">
<xsl:attribute name="id">123</xsl:attribute>
<xsl:element name="td" namespace="">
<xsl:attribute name="style">width: 15%;</xsl:attribute>
<xsl:element name="div" namespace="">
mememe
</xsl:element>
</xsl:element>

<xsl:element name="td" namespace="">
<xsl:element name="div" namespace="">
hi there
</xsl:element>
</xsl:element>

<xsl:element name="td" namespace="">
<xsl:attribute name="style">width: 3%; text-align:center; padding:0px;</xsl:attribute>
<xsl:element name="div" namespace="">
no chance
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:element>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

电流输出

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>My Report</title>
</head>
<body>
<table xmlns="">
<tr id="123">
<td style="width: 15%;">
<div>
mememe
</div>
</td>
<td>
<div>
hi there
</div>
</td>
<td style="width: 3%; text-align:center; padding:0px;">
<div>
no chance
</div>
</td>
</tr>
</table>
</body>
</html>

问题 xmlns=""破坏了我严格的 HTML 验证以及所有后续的 css。我该如何摆脱它?谢谢!

除非您想查看它是如何开始的,否则请不要向下滚动


编辑 我需要一个属性 id对于 tr 标签,因为我需要分配值,所以我可以将它用作 anchor 。

代码

<xsl:template match="Details">
<xsl:element name="tr">
<xsl:attribute name="id">
<xsl:value-of select="following-sibling::PluginID"></xsl:value-of>
<xsl:element name="td">Mall 3</xsl:element>
<xsl:element name="td">00003</xsl:element>
<td class="medium">
<div>
<a href="#top">
<xsl:apply-templates select="text()"/>
</a>
</div>
</td>
<td class="darkstyle" style="width: 3%; text-align:center; padding:0px;">
<div>
<a href="#top">Top</a>
</div>
</td>
</xsl:attribute>
</xsl:element>
</xsl:template>

问题

我无法使用 xsl:element添加<td>而且我不能使用 html <td>标记。 那么我该怎么做?有TD有类等样式需要应用inline他们都应该有一个 <div>具有一定的值(value)。

除非有另一种方法来分配 PluginID 的值至 <tr>

然后我如何添加实际的 <div>它的值(value)在哪里?

如有任何帮助或建议,我们将不胜感激!

编辑 我得到了要应用的类,它转换时没有错误,但 CSS <style>未应用标签,仅应用类中的样式!有什么想法吗?

<xsl:element name="tr">
<xsl:attribute name="id">
<xsl:value-of select="following-sibling::PluginID"></xsl:value-of>
</xsl:attribute>
<xsl:element name="td">
<xsl:attribute name="class">
medium
</xsl:attribute>
<xsl:attribute name="style">
width: 15%;
</xsl:attribute>
<xsl:element name="div">
<xsl:value-of select="following-sibling::RiskDesc"/>
</xsl:element>
</xsl:element>

<xsl:element name="td">
<xsl:attribute name="class">
medium
</xsl:attribute>
<xsl:element name="div">
<xsl:apply-templates select="text()"/>
</xsl:element>
</xsl:element>

<xsl:element name="td">
<xsl:attribute name="class">
darkstyle
</xsl:attribute>
<xsl:attribute name="style">
width: 3%; text-align:center; padding:0px;
</xsl:attribute>
<xsl:element name="div">
Top
</xsl:element>
</xsl:element>
</xsl:element>

电流输出

<tr xmlns="" id="10026">
<td class="&#10;&#9;&#9;&#9;&#9;&#9;medium&#10;&#9;&#9;&#9;&#9;" style="&#10;&#9;&#9;&#9;&#9;&#9;width: 15%;&#10;&#9;&#9;&#9;&#9;">
<div>Medium</div>
</td>
<td class="&#10;&#9;&#9;&#9;&#9;&#9;medium&#10;&#9;&#9;&#9;&#9;">
<div>Derp Derp</div>
</td>
<td class="&#10;&#9;&#9;&#9;&#9;&#9;darkstyle&#10;&#9;&#9;&#9;&#9;" style="&#10;&#9;&#9;&#9;&#9;&#9;width: 3%; text-align:center; padding:0px;&#10;&#9;&#9;&#9;&#9;">
<div>
Top
</div>
</td>
</tr>

编辑 简化示例:

<xsl:element name="div">
<xsl:attribute name="class">
darkstyle
</xsl:attribute>
<!-- THE ISSUE IS THAT THIS STYLE ATTRIBUTE IS NOT BEING APPLIED! -->
<xsl:attribute name="style">
width: 3%; text-align:center; padding:0px;
</xsl:attribute>
<xsl:element name="div">
Top
</xsl:element>
</xsl:element>

关联 CSS

.darkstyle{
vertical-align: text-top;
background:#666;
}

更新 其中一个问题是我的标签被转为转义字符使用

<xsl:attribute name="class">darkstyle</xsl:attribute>

ONE 行,它将创建正确的 html。

我设法追踪到 <tr> 的中断标记,上面的代码,生成以下内容:

<tr xmlns="" id="10020">

是这个xmls=""这破坏了我所有的 CSS。 我该怎么办? 仅供引用:我尝试添加 namespace=""tr但这并没有阻止它。

XSL 顶部

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"
exclude-result-prefixes="yes"
>
<xsl:output method="xml" encoding="UTF-8" indent="yes" />
<xsl:template match="/Report">
<xsl:text disable-output-escaping='yes'>&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;
</xsl:text>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>

最佳答案

您的处理器正在向您的所有行添加一个空的默认命名空间。这会导致您的浏览器对是否应将 tr 元素视为表格行感到困惑。

要解决此问题,您可以通过在样式表根目录中声明此默认命名空间,将所有非命名空间元素放入默认命名空间。

此外,exclude-result-prefixes 属性需要一个前缀列表,而不是一个是/否值。这是您不想附加到生成的文档的命名空间前缀的列表。在您的例子中,它是 xsl。许多处理器会导致错误,其中包含无效值,但出于某种原因,您的处理器显然不会。

在您的 xsl:stylesheet 元素上添加 xmlns="http://www.w3.org/1999/xhtml",并更改 exclude-结果前缀,以便它读取

<xsl:stylesheet 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"
xmlns="http://www.w3.org/1999/xhtml"
exclude-result-prefixes="xsl">

此外,避免在动态元素上使用 namespace="" 属性指定空命名空间,除非它们明确需要空命名空间(即不是 HTML 元素)。

关于html - 具有属性和值以及 CSS 的 XSL TR 和 TD 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35740804/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com