// lib/forms/parseFormXml.js import xpath from "xpath"; /** * NOTE: Your current page uses DOMParser, which is available in the browser. * For SSR parsing you'd usually use xmldom or a similar package. * * This module supports BOTH: * - Browser: pass DOMParser output doc * - Server: if you later add xmldom, pass its doc here */ export function getSectionCount(doc) { const tabs = xpath.select("/form/tabs/tab[*]", doc); return Array.isArray(tabs) ? tabs.length : 0; } export function getTabTitles(doc) { // same XPath you had const titleAttrs = xpath.select( "//form/tabs/tab[*]/labels/label[@description]/@description", doc ); if (!Array.isArray(titleAttrs)) return []; // Attribute nodes differ by parser; be defensive: return titleAttrs .map((n) => (typeof n?.value === "string" ? n.value : n?.toString?.())) .filter(Boolean); } export function getTabs(doc) { const tabs = xpath.select("//form/tabs/tab[*]", doc); return Array.isArray(tabs) ? tabs : []; }