标签: xml-attribute

关于SSRS报告的XSLT

我想用以下数据翻译XML文件:

<FlatData>
    <Details1_Collection>
        <Details1 Customer1="Customer" Total1="3" />
        ...
    </Details1_Collection>
</FlatData>
Run Code Online (Sandbox Code Playgroud)

我感兴趣的数据是每个属性及其值Details1.问题是这些属性在我想翻译的每个XML文件中都不一定相同,我想要一个可以处理Details1这些的通用XSL :

<Details1 Customer1="Customer" Total1="3" />
<Details1 Name="Jim" Age="14" Weight="180" />
<Details1 Date="2009-07-27" Range="1-5" Option1="True" />
Run Code Online (Sandbox Code Playgroud)

这些不同Details1不会出现在相同的源XML文件中,而是出现在不同的文件中.但是,我想在每个上使用相同的XSL.

我以为我需要类似的东西,<xsl:value-of select="@attribute_name"/>但是@attribute_name当我事先不知道会有什么属性时我该怎么做?另外,如何捕获属性名称?我想将上面的源XML分解为:

<Details1>
    <Customer1>Customer</Customer1>
    <Total1>3</Total1>
</Details1>
Run Code Online (Sandbox Code Playgroud)

编辑:感谢您的回复!但是,我遇到的问题不仅仅是以下输出:

<?xml version="1.0" encoding="UTF-8"?>
<FlatData>
<Details1_Collection></Details1_Collection>
</FlatData>
Run Code Online (Sandbox Code Playgroud)

我已经尝试了lavinio和JörnHorstmann的答案,并尝试将两者结合起来.我运行这个命令:

msxsl.exe -o output.xml input.xml transform.xsl
Run Code Online (Sandbox Code Playgroud)

我认为阻碍的是输入文件中的命名空间:

<Report Name="MyReport" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="MyReport">
Run Code Online (Sandbox Code Playgroud)

xml xslt xml-attribute reporting-services

5
推荐指数
1
解决办法
4917
查看次数

为什么我的文档不能作为XHTML 1.1 STRICT验证?

虽然不推荐使用target ="_ blank",但为什么W3C验证器没有给出错误?您可以在验证器中粘贴并检查此代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>

<p>
<a href="http://www.stackoverflow.com" title="New window will open" target="_blank">Link opens in new window</a>
</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

编辑:

这是否意味着XHTML 1.1支持target ="_ blank",但XHTML 1.0严格不支持?或者它是W3C验证器中的错误?

xhtml doctype w3c xml-attribute xhtml-1.1

5
推荐指数
1
解决办法
1847
查看次数

使用xsl获取名为xlink:href的xml属性

如何xlink:href在xsl模板中获取xml节点调用的属性的值?

我有这个xml节点:

<DCPType>
 <HTTP>
  <Get>
   <OnlineResource test="hello" xlink:href="http://localhost/wms/default.aspx" 
      xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" />
  </Get>
 </HTTP>
</DCPType>
Run Code Online (Sandbox Code Playgroud)

当我尝试以下xsl时,我收到错误消息"未定义前缀'xlink'." :

<xsl:value-of select="DCPType/HTTP/Get/OnlineResource/@xlink:href" />
Run Code Online (Sandbox Code Playgroud)

当我尝试这个简单的属性时,它可以工作:

<xsl:value-of select="DCPType/HTTP/Get/OnlineResource/@test" />
Run Code Online (Sandbox Code Playgroud)

xslt xpath xml-attribute wms

5
推荐指数
1
解决办法
5270
查看次数

如何更改svg文件的属性值

在samplexml.svg中有一个节点

<image width="744" height="1052" xlink:href="image1.png"/>
Run Code Online (Sandbox Code Playgroud)

我需要将"image1.png"替换为"image2.png"之类的其他值.请指导我如何使用示例代码.

我可以得到属性值"image1.png".这是代码:

$xdoc = new DomDocument;
$xdoc->Load('samplexml.svg');
$tagName = $xdoc->getElementsByTagName('image')->item(0);
$attribNode = $tagName->getAttributeNode('xlink:href');

echo "Attribute Name  : " . $attribNode->name . "<br/>";
echo "Attribute Value : " . $attribNode->value;
Run Code Online (Sandbox Code Playgroud)

这是samplexml.svg:

<svg>
    <g>
        <title>Test title</title>
        <image x="0" y="0" width="744" height="1052" xlink:href="image1.png"/>
    </g>
</svg>
Run Code Online (Sandbox Code Playgroud)

如何以编程方式更改xlink:href值?

php xml-attribute

5
推荐指数
1
解决办法
4676
查看次数

来自VB.net中属性的Xml节点值

我喜欢XML

<Categories>
    <category name="a">
        <SubCategory>1</SubCategory>
        <SubCategoryName>name1</SubCategoryName>
    </category>
    <category name="b">
        <SubCategory>2</SubCategory>
        <SubCategoryName>name2</SubCategoryName>
    </category>
</Categories>
Run Code Online (Sandbox Code Playgroud)

我如何获得的值<SubCategoryName><category name="a">

xml vb.net xmlnode xml-attribute

5
推荐指数
1
解决办法
3万
查看次数

Jackson marshal XMLAttribute获得"null"值

我对JAXB/Jackson编组有一个问题.我有这样的注释

@XmlAttribute(name = "private")
protected Boolean mPrivate;
Run Code Online (Sandbox Code Playgroud)

如果mPrivate变量是,我希望这个属性不存在null.

如果输出是XML,这可以正常工作.但如果我使用杰克逊切换到JSON,输出就是

xxxxxxx, "private":null, xxxxxxxx
Run Code Online (Sandbox Code Playgroud)

任何人都知道为什么会发生这种情况以及如何解决这个问题?提前致谢.

annotations jaxb xml-attribute jackson

5
推荐指数
1
解决办法
1304
查看次数

是否可以将自定义结构序列化为xml属性?

是否可以将自定义结构序列化为xml属性?

示例代码:

public class Dummy<T>
{
    private Dummy() { }
    public Dummy(T item1)
    {
        Item1 = item1;
        Item2 = item1;
    }

    public T Item1 { get; set; }
    [XmlAttribute]
    public T Item2 { get; set; }
}

public struct Meh
{
    public int Prop { get; set; }
}

[Test]
public void XmlMehTest()
{
    var meh = new Meh{Prop = 1};
    var dummy = new Dummy<Meh>(meh);
    using (var writer = new StringWriter())
    {
        var serializer = new XmlSerializer(dummy.GetType());
        // System.InvalidOperationException …
Run Code Online (Sandbox Code Playgroud)

c# struct xml-serialization xml-attribute

5
推荐指数
1
解决办法
4002
查看次数

在Powershell中访问XMLAttribute的#text属性

我有一个xml文档,格式如下:

<root>
<obj>
   <indexlist>
      <index name="NUMD" value="val1" />
      <index name="DATE" value="val2" />
   </indexlist>
</obj>
</root>
Run Code Online (Sandbox Code Playgroud)

现在我想更改名称设置为“ DATE”的索引元素的value属性。我得到这样的属性:

$attr = $xml.selectnodes("//obj/indexlist/index[@name='DATE']/@value")
Run Code Online (Sandbox Code Playgroud)

我可以通过键入以下内容来查看值:

$attr.'#text'
Run Code Online (Sandbox Code Playgroud)

但我无法更改:

$attr.'#text' = 'foo'
The property '#text' cannot be found on this object. Verify that the property exists and can be set.
At line:1 char:1
+ $n.'#text' = 'foo'
+ ~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : PropertyAssignmentException
Run Code Online (Sandbox Code Playgroud)

如何更改XMLAttribute的值?


如果可能的话,我也想坚持使用XPath直接返回属性,因为该脚本的最终用户将使用XPath在配置文件中定义要更改的元素和属性。
在将XPath用作属性时,用户只需提供两个参数即可更改属性和future-value:XPath和value。

xml powershell xpath xml-attribute

5
推荐指数
1
解决办法
8456
查看次数

XML模式; 有效属性值列表中的多个

我是使用XML模式的新手,所以请原谅我的无能,如果这比我自己认为必须的更微不足道.

我正在尝试创建一个必需的属性,该属性必须包含一个或多个列表中以空格分隔的字符串值.该列表是4种典型的HTTP请求方法; get,post,put,和delete.

所以有效的元素包括:

<rule methods="get" />
<rule methods="get post" />
<rule methods="post put delete" />
Run Code Online (Sandbox Code Playgroud)

而无效元素包括:

<rule methods="get get" />
<rule methods="foobar post" />
<rule methods="get;post;put" />
Run Code Online (Sandbox Code Playgroud)

我试着用枚举和长度来愚弄,但我不相信我理解我需要做什么(或者如果它实际上是可能的话,尽管看起来好像应该这样)


这就是我现在所处的位置,感谢@tdrury:

<xs:attribute name="methods" use="required">
    <xs:simpleType>
        <xs:restriction base="xs:string">
            <xs:whiteSpace value="collapse" />
            <xs:pattern value="(?:(?:get|post|put|delete)\s?){1,4}" />
        </xs:restriction>
    </xs:simpleType>
</xs:attribute>
Run Code Online (Sandbox Code Playgroud)

哪个有效,除了重复(get getpost post post)和缺少空格(getpostpostputdelete)


编辑:

在玩了一下之后,我提出了一个想法:列举所有可能的序列.值得庆幸的是,这份名单是(暂时)固定在四个通常的运输方式,get,post,put,和delete …

xsd xml-attribute

4
推荐指数
2
解决办法
2万
查看次数

使用SQL查询读取XML子节点属性

我在表(Qualifications)中有一个XML列(Criteria),它包含不同的XML:

<training ID="173"><badge ID="10027" /><badge ID="10028" /></training>
<book Category="Hobbies And Interests" PropertyName="C#" CategoryID="44" />
<sport Category="Hobbies And Interests" PropertyName="Cricket" CategoryID="46" />
<education ID="450" School="Jai ambe vidyalaya"></education>
Run Code Online (Sandbox Code Playgroud)

我想读取"training"节点下所有节点的"badge"节点"ID"属性.

有人可以帮忙吗?

xml sql sql-server xml-attribute

4
推荐指数
2
解决办法
1万
查看次数