使用 XSL 显示 XSD 定义的属性默认值

2024-03-08

我认为这应该很容易找到,但经过一番搜索后,我发现这可能最好明确定义。

在我的 XSD 中,我定义了一个从字符串派生的枚举。在复杂类型中,我定义了引用此枚举的属性,并具有默认值。

在我的 XSL 中,我希望为未显式设置属性的元素显示该属性的默认值。

The XSD:

<xs:complexType name="foo">
    <xs:attribute name="bar" type="responsecodes:barType" default="default"/>
</xs:complexType>

<xs:simpleType name="barType">
    <xs:restriction base="xs:string">
        <xs:enumeration value="default">
            <xs:annotation>
                <xs:documentation xml:lang="en-us">Default bar.</xs:documentation>
            </xs:annotation>
        </xs:enumeration>
        <xs:enumeration value="chocolate">
            <xs:annotation>
                <xs:documentation xml:lang="en-us">A chocolate ...bar</xs:documentation>
            </xs:annotation>
        </xs:enumeration>
    </xs:restriction>
</xs:simpleType>

The XML:

....
<foo/>
<foo bar="default"/>
<foo bar="chocolate"/>
....

我希望 XSL 是:(或多或少)

<ol>
<xsl:for-each select="/foo">
    <li>BarType: '<xsl:value-of select="@bar" />'</li>
</xsl:for-each>
</ol>

现在,当我显示此样式 XML 文件时,对于非指定值,“bar”属性的值为空,而我希望显示(或选择)默认值。

Now:

  1. 栏类型: ''
  2. 栏类型:'默认'
  3. 酒吧类型:“巧克力”

Desired:

  1. 栏类型:'默认'
  2. 栏类型:'默认'
  3. 酒吧类型:“巧克力”

现在这应该很简单,不是吗?


也许我过于笼统,但如果您想从模式加载默认值,您将需要类似以下内容:

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

  <xsl:variable name="schema" select="
    document('responsecodes.xsd')
  " />
  <xsl:variable name="DefaultBar" select="
    $schema//xs:complexType[@name='foo']/xs:attribute[@name='bar']/@default
  " />

  <xsl:template match="foo">
    <li>
      <xsl:text>BarType: '</xsl:text>
      <xsl:choose>
        <xsl:when test="@bar">
          <xsl:value-of select="@bar" />
        </xsl:when>
        <xsl:otherwise>
          <xsl:value-of select="$DefaultBar" />
        </xsl:otherwise>
      </xsl:choose>
      <xsl:text>'</xsl:text>
    </li>
  </xsl:template>
</xsl:stylesheet>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 XSL 显示 XSD 定义的属性默认值 的相关文章

随机推荐

  • 想要创建一个 Dictionary 类型的自定义类

    我想创建一个基本上包装字典的自定义类 我想向其添加一个名为 Name 的属性 I tried public class MyDictionary
  • Chrome 声称简单函数未定义

    我在空闲时间制作了一个莫尔斯电码翻译器 并且第一次在 Chrome 中尝试了它 当 的时候translate 函数被调用 Chrome 抛出异常Uncaught TypeError translate is not a function a
  • 如何将“$modalInstance”注入控制器?

    在我的应用程序中 当我发现用户未登录后 我想打开一个模式对话框 when showtask id templateUrl Home Template showtask resolve ShowTaskCtrl resolve access
  • 为什么在 Python 中隐式检查是否为空? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 块的逆是什么:以 rebol / red 加载文本

    假设我有一些 rebol red 代码 如果我加载源文本 我会得到一个块 但是如何从块中取回源文本 我尝试了表单块 但它没有返回源文本 text Red Title Red Pretty Printer out none output te
  • Javascript 中的会话值

    如何在 JavaScript 中读取和写入会话值 如果您谈到服务器端会话值 除了以某种方式与服务器通信之外没有其他方法 例如 使用异步回调 您可以使用某种方法读取 写入它们 对于客户端会话变量的模拟 您可能想看看here http www
  • 无法通过代理推送到github

    请帮忙 我正在尝试从我的工作场所推送到 github 我试过这个 myuser somewhere c sites mrquery master git remote add origin ssh email protected cdn c
  • 创建 React 应用程序已部署,但 github 页面显示来自 manifest.json 的 404

    谁能帮我找出清单 json 文件的问题 我将一个简单的入门 create react 应用程序部署到 github 页面 并通过命令行显示该应用程序已发布 但当我转到 github 页面时页面未加载 当我查看控制台时 我收到来自 manif
  • 单例类方法的并发调用

    我有一个单例类 public class Singleton private static Singleton istance null private Singleton public synchronized static Single
  • 推荐一个用 C# 读取 Excel 文件的教程 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有 C 经验 但使用 C 读取 Excel 内容的经验有限 我的任务非常简单 只需读取 Excel 文档的每一行的每一列并检索它们的值
  • 重新调度键盘事件

    正在开发 Angular TypeScript 应用程序 其中我们有一个自定义的基本文本编辑器 尝试适当地处理用户突出显示的选择然后按下按键以替换该选择的情况 为了解决这个问题 我们需要在插入其预期内容之前正确删除他们选择的 隐藏 组件 我
  • 间接参数化时如何注释request.param?

    In the 间接参数化示例 https docs pytest org en stable example parametrize html indirect parametrization我想输入提示request param表示特定类
  • 字符串中至少一定数量的数字的正则表达式

    当用户提交表单时 我需要确保输入至少包含最小数量的数字 问题是我不知道输入的格式 数字可能不会连续 并且可能由字母 标点符号 空格等分隔 我不关心其余的字符串 我想用 RegularExpressionValidator 检查这一点 但我不
  • Android切换到gradle不编译JRE7代码功能

    我将 Android 应用程序移至 Android Studio 而没有切换到 Gradle 现在我想转到 Gradle 该应用程序在切换到 Gradle 之前在 Android Studio 中进行编译 但现在我已经设置好 Gradle
  • 使用 POSIX API 读取文件

    考虑以下代码段 用于将文件内容读入缓冲区 include
  • Google 日历 API 错误 - “API 密钥无效。请传递有效的 API 密钥。”,

    从昨天起我开始从 google rest api 收到错误 error code 400 message API key not valid Please pass a valid API key errors message API ke
  • 推/拉类在网格系统中做什么?

    当我查看很多 CSS 网格系统和框架时 它们通常有一个带有百分比宽度的标准列和行设置 例如这样的事情 标准网格列 col 10 width 83 33333 width calc 100 12 10 width webkit calc 10
  • 重用 SQL Server 公用表表达式的结果

    我有一个查询 使用公用表表达式检索页面的所有模块和子模块 是否可以多次使用 cte 的结果 example WITH top level modules AppContentModuleID SortIndex ContentHolderN
  • V8 JavaScript 对象与二叉树

    有没有更快的方法来搜索数据JavaScript 特别是关于V8 via node js 但没有 c c 模块 比使用JavaScript Object 这可能已经过时了 https developers google com v8 desi
  • 使用 XSL 显示 XSD 定义的属性默认值

    我认为这应该很容易找到 但经过一番搜索后 我发现这可能最好明确定义 在我的 XSD 中 我定义了一个从字符串派生的枚举 在复杂类型中 我定义了引用此枚举的属性 并具有默认值 在我的 XSL 中 我希望为未显式设置属性的元素显示该属性的默认值