可扩展标记语言(XML)是一种灵活的结构化文档格式,用于定义人类和机器可读的编码规则。
有没有办法改变验证的顺序:Struts 2中的validate()与validation.xml?
我有一个validation.xml文件来检查表单的字段是否为空以及那种简单的验证。我还有一个 validate() 方法(从 ActionSupport 扩展)来检查更复杂的
如何? xmlstarlet 通过 id 提取 HTML 数据
我有一个简单的任务,让我把头发拉出来,我确信我已经非常接近了。 这是我的 xhtml 文件: 我有一个简单的任务,需要我把头发拔出来,我确信我已经非常接近了。 这是我的 xhtml 文件: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Test Page</title> </head> <body> <p> test </p> <table id="test_table"> <tr><td>test</td><td>test</td></tr> <tr><th>mo test</th></tr> </table> </body> </html> ...并且 xmlstarlet 喜欢它: $ xmlstarlet.exe el -v test.xhtml html[@xmlns='http://www.w3.org/1999/xhtml'] html/head html/head/title html/body html/body/p html/body/table[@id='test_table'] html/body/table/tr html/body/table/tr/td html/body/table/tr/td html/body/table/tr html/body/table/tr/th 我需要做的是提取表格标签中的数据,最好没有 HTML。 其背景是我正在编写一个测试集,其中调用网页然后写入文件。 该测试要求我验证表数据,但如果页面上的其他内容发生变化,则允许测试成功。 另外,我不会提前知道表格将有多少列或行,它可能会根据数据而变化。 但是当我尝试时: $ xmlstarlet.exe sel -t -c "/html/body/table[@id='test_table']" test.xhtml Attempt to load network entity http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd None of the XPaths matched; to match a node in the default namespace use '_' as the prefix (see section 5.1 in the manual). For instance, use /_:node instead of /node 不同的测试需要不同的 id,但它们都有唯一的 id 值。 所以,给定 xhthml 中的任何“id”,我需要它的数据。 提前致谢。 html数据有一个默认命名空间,您必须在xmlstarlet命令中声明: xmlstarlet sel \ -N n="http://www.w3.org/1999/xhtml" \ -t \ -c "/n:html/n:body/n:table[@id='test_table']/descendant::*/text()" \ htmlfile 2>/dev/null 找到 <table> 元素后,我使用 descendant::*/text() 提取它的所有文本元素,并使用 2>/dev/null 跳过警告: Attempt to load network entity http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd 它产生: testtestmo test 更新:我不知道,但正如错误消息所示,当命名空间是默认命名空间时,无需声明命名空间,所以这也有效: xmlstarlet sel \ -t \ -c "/_:html/_:body/_:table[@id='test_table']/descendant::*/text()" \ htmlfile 2>/dev/null 正如中提到的 http://xmlstar.sourceforge.net/doc/UG/ch05.html 使用时常见问题 -N x="http://www.w3.org/1999/xhtml" \ 您还必须为节点选择添加前缀 x: 例如 xmlstarlet sel \ -N x="http://www.w3.org/1999/xhtml" \ -t \ -m "//x:pre" \ -v . somehtml.html 将选择所有前置节点 你可以试试 xmlstarlet ed --inplace -u "html/body/table[@id='your_tabl e_id']/tr[@id='row_id']/td[@id='data_id']" -v NEW_VALUE_TO_BE_CHANGED HTMLFILE_NAME 2>/dev/null
我有与此类似的 XML: 11111 我有与此类似的 XML: <orders> <orderCompleteRequestType> <Head> <Aufnr>11111</Aufnr> </Head> <Register> <Id>180</Id> <value1>11</value1> <value2>22</value2> </Register> <Register> <Id>181</Id> <value1>3</value1> <value2>43</value2> </Register> <Register> <Id>160</Id> <value1>5</value1> <value2>25</value2> </Register> </orderCompleteRequestType> <orderCompleteRequestType> <Head> <Aufnr>22222</Aufnr> </Head> <Register> <Id>280</Id> <value1>1</value1> <value2>12</value2> </Register> <Register> <Id>160</Id> <value1>12</value1> <value2>7</value2> </Register> <Register> <Id>281</Id> <value1>94</value1> <value2>22</value2> </Register> </orderCompleteRequestType> </orders> 我想从每个“orderCompleteRequestType”结构中选择 CSV 格式的一些值: 头/奥夫恩 注册/ID 寄存器/值1 寄存器/值2 使用以下命令行时: xmlstarlet sel -T -t -m "/orders/orderCompleteRequestType" -v "Head/Aufnr" -o ";" -v "Register/Id" -o ";" -v "Register/value1" -o ";" -v "Register/value2" -n -n test.xml 我得到: 11111;180 181 160;11 3 5;22 43 25 22222;280 160 281;1 12 94;12 7 22 所以,首先是 Register/Id 节点的所有值,接下来是所有 Register/value1,最后是所有 Register/value2,但我期望的是这样的: 11111;180;11;22 11111;181;3;43 11111;160;5;25 22222;280;1;12 22222;160;12;7 22222;281;94;22 任何人都可以帮助我,因为我的大脑拒绝工作...... 不要匹配 orderCompleteRequestType,而是考虑匹配 Register... xmlstarlet sel -T -t -m "/orders/orderCompleteRequestType/Register" -v "concat(../Head/Aufnr,';',Id,';',value1,';',value2)" -n test.xml 输出... 11111;180;11;22 11111;181;3;43 11111;160;5;25 22222;280;1;12 22222;160;12;7 22222;281;94;22 每个orderCompleteRequestType之间没有额外的换行符,但这也许没什么大不了的?如果是,那么编写 XSLT 并使用 xmlstarlet 调用它可能会更容易。
我正在尝试添加 xlsx 格式的自定义报告(对于 Excel),并且我希望可以通过采购订单上的打印按钮访问它。 我知道在其他版本中这是可能的,但是伙计......
我正在创建一个 roku 频道。我需要以幻灯片模式显示图像。问题是,有些图像是水平的,有些是垂直的。所以,我需要根据图像旋转 Poster 节点...
在 VS code 中突出显示 XML 元素内或 CDATA 内的 JS 代码
我希望在某些 XML 元素中突出显示 JS 语法。例如。 我希望在某些 XML 元素中突出显示 JS 语法。例如 <Module Name="Main"> <![CDATA[ var obj = {}; obj.car = { Name: 'car', HP: 135}; obj.drive = function(car){...} ]]></Module> 目前显示为 是否有任何扩展可以突出显示元素内的 JS 或者我必须做一些自定义的事情? 我尝试了各种 XML 扩展,但似乎都没有集成。 您可以尝试扩展嵌入语言扩展
从 Claudio Biselli 那里,我得到了编写这个解密数据库脚本的灵感: 声明@DBNAME SYSNAME; 声明 @SQL NVARCHAR(MAX); SET @DBNAME = DB_NAME(DB_ID()); IF (@DBNAME = '主') 乙...
如何防止 javax.xml.transform.Transformer 用 UTF-8 编码中的数字字符引用替换非 BMP Unicode 字符?
背景 我想编写一个包含 UTF-8 编码的非 BMP 字符的 XML 文件。 问题 使用以下代码,生成的 XML 文件将非 BMP Unicode 字符替换为数字
我试图替换放置在FrameLayouts中的片段中的TextView。因此,TextView 在设计中可见,但在虚拟设备上的应用程序中却看不到。 我试图替换片段中的TextView,这些片段放置在FrameLayouts中。因此,TextView 在设计中可见,但在虚拟设备上的应用程序中看不到。 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="385dp" xmlns:app="http://schemas.android.com/apk/res-auto" tools:context=".RegistrationContainerFragment" android:orientation="vertical" android:background="@drawable/auth_container_background" android:elevation="8dp" android:translationZ="4dp" android:layout_marginHorizontal="15dp"> <FrameLayout android:id="@+id/title" android:layout_width="match_parent" android:layout_height="wrap_content"/> <FrameLayout android:id="@+id/username_and_email_input_container" android:layout_width="match_parent" android:layout_height="wrap_content" /> <FrameLayout android:id="@+id/password_input_container" android:layout_width="match_parent" android:layout_height="wrap_content"/> <FrameLayout android:id="@+id/primary_button_container" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:layout_height="wrap_content" android:layout_width="match_parent" android:fontFamily="@font/montserrat_semibold_font" android:textSize="14sp" android:textColor="@color/text" android:text="Forgot password?"/> <FrameLayout android:id="@+id/line" android:layout_width="match_parent" android:layout_height="wrap_content"/> <FrameLayout android:id="@+id/textAndLinkText" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal"/> </LinearLayout> import android.os.Bundle import android.text.InputType import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.TextView import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentTransaction class LoginContainerFragment : Fragment() { override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { val view = inflater.inflate(R.layout.fragment_registration_container, container, false) val fragmentManager: FragmentManager = childFragmentManager val fragmentTransaction: FragmentTransaction = fragmentManager.beginTransaction() val title = TitleFragment() title.setShowBackArrow(true) title.setTitleText("Log In") fragmentTransaction.add(R.id.title, title) val textInputFragment = InputFragment() textInputFragment.setInputType(InputType.TYPE_CLASS_TEXT) textInputFragment.setInputHint("Enter your email or username") fragmentTransaction.add(R.id.text_input_container, textInputFragment) val passwordInputFragment = InputFragment() passwordInputFragment.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD) passwordInputFragment.setInputHint("Enter your password") fragmentTransaction.add(R.id.password_input_container, passwordInputFragment) val primaryButtonFragment = PrimaryButtonFragment() primaryButtonFragment.setButtonText("next") fragmentTransaction.add(R.id.primary_button_container, primaryButtonFragment) val lineFragment = LineFragment() fragmentTransaction.add(R.id.line, lineFragment) val textAndLinkFragment = TextWithLinkFragment() textAndLinkFragment.setTextAndLinkText( getString(R.string.dont_have_an_account), getString(R.string.sign_in) ) fragmentTransaction.add(R.id.textAndLinkText, textAndLinkFragment) fragmentTransaction.commit() return view } } 我试图将 TextView 放在 FrameLayout 内,但没有帮助。 之后我试图为此制作一个片段TextView,但不知何故我的应用程序没有启动而是崩溃了。 我也尝试使用一些标签,如\<androidx.swiperefreshlayout.widget.SwipeRefreshLayout\>,但没有帮助。 使用了text_input_container,但它不存在于您的布局中 fragmentTransaction.add(R.id.text_input_container, textInputFragment)
我正在创建一个 Roku 频道。我需要启动计时器并检查设备是否正在验证。这可能是一个复杂的逻辑,但您可以在下面看到我的代码。成功添加设备,并触发...
我正在尝试从使用 XML 文件中的值填充的 DataTable 填充实体框架表。但是,在尝试将这些行添加到我的实体框架时遇到错误...
嗨,我现在正在 Spring Boot 上开发 xml 验证器,但它并没有给出与使用在线工具验证时得到的结果相同的结果,即使我一直使用相同的 .sch 文件和 .xml 文件。任何人都可以...
抑制 javax.xml.transform.Transformer 将非 BMP Unicode 字符替换为 UTF-8 编码中的数字字符引用
背景 我想编写一个包含 UTF-8 编码的非 BMP 字符的 XML 文件。 问题 使用以下代码,生成的 XML 文件将非 BMP Unicode 字符替换为数字
我有一个简单的 v1.0 样式表,如下所示。 它需要是 v1.0: 我有一个简单的 v1.0 样式表,如下所示。 它需要是 v1.0: <xsl:stylesheet version = "1.0" xmlns="http://<redacted>" xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://www.w3.org/2005/02/xpath-functions"> <xsl:output method="xml"/> <xsl:output method="xml" indent="yes"/> <xsl:template match="/PFA"> <data> <record skip="true"> <value name="Id" type="string"/> <value name="NameType" type="string"/> <value name="Suffix" type="string"/> <value name="CarName" type="string"/> </record> <xsl:apply-templates select="Records/Car"/> </data> </xsl:template> <xsl:template match="Car"> <xsl:apply-templates select="NameDetails/Name"> <xsl:with-param name="id" select="@id"/> </xsl:apply-templates> </xsl:template> <xsl:template match="Name"> <xsl:param name="id"/> <record> <value name="Id"> <xsl:value-of select="$id"/> </value> <value name="NameType"> <xsl:value-of select="@NameType"/> </value> <value name="Suffix"> <xsl:value-of select="NameValue/Suffix"/> </value> <value name="CarName"> <xsl:value-of select="NameValue/CarName"/> </value> </record> </xsl:template> </xsl:stylesheet> 我还有一个包含 1 条记录的 XML 文件,其中包含许多属性: <?xml version="1.0" encoding="UTF-8"?> <PFA date="202410281000" type="full"> <Records> <Car id="1023956" action="add" date="26-Feb-2024"> <NameDetails> <Name NameType="Primary Name"> <NameValue> <CarName>Porsche 911 Turbo</CarName> </NameValue> </Name> <Name NameType="Also Known As"> <NameValue> <Suffix>Turbo</Suffix> <CarName>Neunelf</CarName> </NameValue> <NameValue> <Suffix>GT1</Suffix> <CarName>Porsche AG 911</CarName> </NameValue> </Name> <Name NameType="Formerly Known As"> <NameValue> <Suffix>356</Suffix> <CarName>Porsche</CarName> </NameValue> </Name> <Name NameType="Spelling Variation"> <NameValue> <CarName>Porshe 911</CarName> </NameValue> <NameValue> <Suffix>Turbo</Suffix> <CarName>911</CarName> </NameValue> </Name> </NameDetails> </Car> </Records> </PFA> 当我将 XML 读入第三方应用程序时,它适用于仅具有单个值的两个 NameType(即 Primary Name 和 Formerly Known As)。 但是,它只为具有多个值的两个 NameType 呈现单个值。 此外,对于拼写变体,它似乎从一个名称值中挑选出 CarName,并从另一个名称值中挑选出后缀(即,它应该将“911”和“Turbo”保留在一起,而不是“Porshe 911”和“Turbo”。 ) 我得到的是这样的: 但我希望得到的是这样的: 任何人都可以帮我渲染丢失的行吗? 非常感谢。 看看这是否适合您: XSLT 1.0 <xsl:stylesheet version = "1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://redacted"> <xsl:output method="xml" indent="yes"/> <xsl:template match="/PFA"> <data> <record skip="true"> <value name="Id" type="string"/> <value name="NameType" type="string"/> <value name="Suffix" type="string"/> <value name="CarName" type="string"/> </record> <xsl:for-each select="Records/Car"> <xsl:variable name="id" select="@id" /> <xsl:for-each select="NameDetails/Name"> <xsl:variable name="nType" select="@NameType" /> <xsl:for-each select="NameValue"> <record> <value name="Id"> <xsl:value-of select="$id"/> </value> <value name="NameType"> <xsl:value-of select="$nType"/> </value> <value name="Suffix"> <xsl:value-of select="Suffix"/> </value> <value name="CarName"> <xsl:value-of select="CarName"/> </value> </record> </xsl:for-each> </xsl:for-each> </xsl:for-each> </data> </xsl:template> </xsl:stylesheet>
转义符 Unicode 字符 \u000a 只能在 JavaScript 中使用。但是,我尝试在 XML 视图中添加换行符,如下所示。但不起作用: 转义字符 \n 和 Unicode 字符 \u000a 仅适用于 JavaScript。但是,我尝试在 XML 视图中添加换行符,如下所示。但不起作用: <u:TimelineItem text="First Line\n SecondLine" /> 文本控件中的新行可以添加以下字符: 在 XML 视图或 XML 片段中: 换行: 或
。 推荐:* 与 回车符结合使用: 或 
。 在 JS 或 i18n.properties 文件中: 换行:\n或\u000a。 推荐:* 与 回车符结合使用:\r\n 或 \u000d\u000a。 或者,考虑使用 模板文字,而不是手动连接上述字符(即简单地将 "..." 替换为 `...`)。 某些 UI5 控件允许开箱即用 HTML 标签 <br>(在 XML 中:<br>): sap.m.MessageStrip 自 UI5 v1.85 起:API 参考、示例 sap.m.FormattedText:API参考 * 请参阅 不同换行格式的问题。对于大多数互联网协议,建议使用回车符组合。 这是一个带有 sap.suite.ui.commons.TimelineItem* 和 sap.m.Text 的 UI5 演示: globalThis.onUI5Init = () => sap.ui.require([ "sap/ui/core/mvc/XMLView", "sap/m/Text", ], async (XMLView, Text) => { "use strict"; const view = await XMLView.create({ definition: `<mvc:View xmlns:mvc="sap.ui.core.mvc" height="100%"> <App xmlns="sap.m" autoFocus="false"> <Page showHeader="false" class="sapUiResponsiveContentPadding"> <commons:TimelineItem xmlns:commons="sap.suite.ui.commons" text="Multiline supported in Timeline items (XML)" /> <HBox id="myBox" justifyContent="SpaceAround"> <Text text="This is
a text (created in XML view)!" renderWhitespace="true" /> </HBox> </Page> </App> </mvc:View>`, }); const textCreatedInJS = new Text({ renderWhitespace: true, text: "And this\nis\u000aanother\r\ntext (created in JS)!", }); view.byId("myBox").addItem(textCreatedInJS); view.placeAt("content"); }); <script id="sap-ui-bootstrap" src="https://ui5.sap.com/resources/sap-ui-core.js" data-sap-ui-libs="sap.ui.core,sap.m,sap.suite.ui.commons" data-sap-ui-theme="sap_fiori_3" data-sap-ui-oninit="onUI5Init" data-sap-ui-async="true" data-sap-ui-compatversion="edge" data-sap-ui-excludejquerycompat="true" data-sap-ui-xx-waitfortheme="init" ></script> <body id="content" class="sapUiBody"></body> * TimelineItem 在 UI5 的早期版本中存在阻止多行的错误。根据 1.44.5 的变更日志: [修复] sap.suite.ui.commons.Timeline:改进了多行文本的渲染 如果使用控件 sap.m.Text,请记住启用属性 renderWhitespace 和 wrapping 以便在 DOM 中渲染新行。 对于 UI5 控件开发人员 在 DOM 中渲染文本可以通过 .text(/*...*/) 中的 API RenderManager 来实现。然而,即使文本包含上述换行符,该 API 也不一定应用换行符。在这种情况下, white-space 属性 pre-line 可以应用于控件的 CSS 样式: .myControlWithText { /* ...; */ white-space: pre-line; /* Allows line break characters to be applied */ } 而不是 您可以使用表达方式:“”。 例如: Text="{TOPOLINO} - {=${PAPERINO} === 'NA' || ${PAPERINO} === 0 ? '---' : ${PAPERINO}}{PAPERONE} " 您可以使用embeddedControl聚合来使用文本控件 在时间轴项目内 <u:TimelineItem> <u:embeddedControl><Text text="First Line\n SecondLine"></Text></u:embeddedControl> </u:TimelineItem>