我不得不对我正在研究的互联网电视网站提出疑问。 第一个问题是订阅的主要元素有一个属性被称为(ServerIP)我希望服务器ip被修复,我想给它一个永远不会改变的值。我尝试了这段代码,但它没有工作,当我尝试打印时它没有打印,除非我用XML给它一个值
<xs:attribute name="serverIP" type="xs:string" fixed="10.144.50.55"/>
第二个问题是,如果我有一个名为date的元素,我想给它一个特定的模式yyyy-mm-dd。我知道我可以使用简单类型为属性做这件事。我试过这段代码,但它没有工作
<xs:element name="dateOfBirth" type="xs:date">
<xs:complexType>
<xs:simpleContent>
<xs:restriction base="xs:date">
<xs:pattern value="d{4}[-]d{2}[-]d{2}"/>
</xs:restriction>
</xs:complexType>
</xs:simpleContent>
</xs:element>
我怎么知道我的代码有效?因为当我在XML文件中以yyyymmdd格式给它一个值时,它会以与yyyy-mm-dd不同的格式打印出来
答案 0 :(得分:0)
对于第一个问题 - 这取决于你在问题中应该提到的XSLT处理器。从
调整属性<xs:attribute name="serverIP" type="xs:string" fixed="10.144.50.55"/>
到
<xs:attribute name="serverIP" select="'10.144.50.55'"/>
保持值例如撒克逊人9.5.1.6 HE。 Demo
例如撒克逊人6.5。它会是
<server>
<xsl:attribute name="serverIP">10.144.50.55</xsl:attribute>
</server>
虽然我无法找到处理固定属性的在线XSLT处理器,但我猜它可能会将当前属性调整为
<xs:attribute name="serverIP" type="xs:string" fixed="'10.144.50.55'"/>
注释的更新:您还可以尝试在XSLT的开头声明一个静态参数:
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="html" doctype-public="XSLT-compat"
omit-xml-declaration="yes" encoding="UTF-8" indent="yes" />
<xsl:param name="staticServer" select="'10.144.50.55'"/>
<xsl:template match="/">
<hmtl>
<head>
<server>
<xsl:attribute name="serverIP" select="$staticServer"/></server>
</head>
</hmtl>
</xsl:template>
但是,如果这种方法有效,它还取决于你未知的XSLT处理器。 Demo
注释的更新:正如刚才提到的那样使用Notepad ++,问题是是否应用了任何XSLT来修改输出。如果没有,你可以检查,例如https://superuser.com/questions/148177/notepad-or-other-application-to-replace-string-with-numeric-function例如。